konto usunięte

Temat: DataGridView

Witam,
Mam mały problem, którego natura jest niby bardziej estetyczna niż funkcjonalna. Otóż mam kontrolkę DataGridView do której ładuję różnej wielkości pliki. Problem pojawia się w momencie zaznaczanie komórki. Proces ten jest stosunkowo wolny i nie wiem czego to wina. Początkowo myślałem, że przyczyną jest ilość danych jednak to nie było to. Czy może jest jakaś właściwość pozwalająca uczynić DGV płynniejszym ?:>
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: DataGridView

Ale zaznaczasz poprzez kliknięcie na wiersz? Raczej to już jest wewnętrzne zachowanie kontrolki i nic na to nie poradzisz. Problem musi leżeć gdzie indziej. Może jakieś zdarzenia się odpalają jak zaznaczasz wiersz i one spowalniają cały proces?

konto usunięte

Temat: DataGridView

Zaznaczałem pojedyncze komórki i udostępniam multiselect. Udało mi się trochę przyspieszyć o ok 30% przechodząc min. na zaznaczenie całych wierszy. Kod mojego Grida:
this.DGVDane.AllowUserToAddRows = false;
this.DGVDane.AllowUserToOrderColumns = true;
this.DGVDane.AllowUserToResizeRows = false;
this.DGVDane.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
this.DGVDane.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.DGVDane.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.DGVDane.ContextMenuStrip = this.cmsMEnu;
this.DGVDane.Dock = System.Windows.Forms.DockStyle.Fill;
this.DGVDane.GridColor = System.Drawing.SystemColors.Desktop;
this.DGVDane.Location = new System.Drawing.Point(0, 0);
this.DGVDane.MultiSelect = false;
this.DGVDane.Name = "DGVDane";
this.DGVDane.ReadOnly = true;
this.DGVDane.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.HotTrack;
this.DGVDane.RowsDefaultCellStyle = dataGridViewCellStyle1;
this.DGVDane.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.DGVDane.Size = new System.Drawing.Size(806, 614);
this.DGVDane.TabIndex = 0;
this.DGVDane.RowHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.DGVDane_RowHeaderMouseClick);

konto usunięte

Temat: DataGridView

Lekko nie na temat, ale nie możesz tego profilerem jakimś przejechać? Wtedy zlokalizujesz swoje wąskie gardło, które wcale nie musi się znajdować w gridzie.

konto usunięte

Temat: DataGridView

Rozumiem, że masz na myśli SQL Profiler? Jeśli tak to nie mogę tego zrobić ponieważ dane pochodzą z pliku a nie z bazy danych.

konto usunięte

Temat: DataGridView

Rozumiem, że masz na myśli SQL Profiler?
Profiler taki podający ile czasu proces spędza w danej metodzie. Ja używam tego co jest dostarczony wraz z VSTS, nie mogę Ci nic innego polecić bo nie używam i nie wiem czy nawet jest jakiś bezpłatny dostępny (mój współpracownik chwalił http://www.red-gate.com/Products/ants_profiler/ )
Natomiast w tym konkretnym przypadku CLRProfiler.EXE nie jest odpowiednim rozwiązaniem, bo on profiluje użycie pamięci a nie obciążenie procesora.

Naprawdę polecam profiler - w parę minut być może miałbyś pozytywne rozwiązanie swojego problemu. Piszę być może ponieważ to może być po prostu ułomność samego grida, ale przynajmniej zlokalizujesz problem i będziesz miał dobry punkt wyjścia do dalszych prób.
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: DataGridView

A co robisz w ty, zdarzeniu this.DGVDane_RowHeaderMouseClick?

konto usunięte

Temat: DataGridView

Po kliknięciu na nagłówek pobierane są informacje z Internetu odnośnie wybranej pozycji. Jednak obecność zdarzenia nie ma nic do rzeczy ponieważ przed jego dodaniem problem już istniał.

Następna dyskusja:

C#, datagridview, combobox ...




Wyślij zaproszenie do