Marcin
Pigłowski
Specjalista ds. baz
danych
Temat: Narysowanie ikony na nagłówku siatki
Witam wszystkich,mam kłopot. Chcę narysować ikonę na nagłówku jednej kolumny DataGridView. Rysuję za pomocą kodu:
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
try
{
if (e.RowIndex == -1 && e.ColumnIndex == 0)
{
Image img = (Image)this.resources.GetObject("ArrowUp16");
e.Graphics.DrawImage(img, new Point(e.CellBounds.Right - 2 * img.Width, e.CellBounds.Top));
e.Handled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
i jest problem jak e.Handled = false to nie widać ikony, ewentualnie pojawia się w różnych ciekawych miejscach ale nie tam gdzie powinna :(
jak e.Handled = true to znika mi cały header i tylko widzę tą ikonę, a trochę mi się nie uśmiecha rysować całego nagłówka.
Może ktoś ma pomysł jak z tego wybrnąć, może kiedyś już się z tym spotkał.
Od razu mówię, że rysunek istnieje i żaden wyjątek nie jest rzucany. Cała formatka ma tylko DataGridView a w zdarzeniu Load formatki są ładowane dane (lista 20 elementów o strukturze: id, value1, value2).
I geneza powstania problemu:
Dane ładuje do siatki (w innym projekcie ten jest tylko, żeby pokazać sam problem bez wnikania w to czy coś innego może powodować taki problem) dane w VirtualMode. Ponieważ takich danych DataGridView nie może sortować więc sortuję ręcznie i podstawiam na nowo do siatki. Minus takiego rozwiązania jest taki, że nie wyświetla się strzałka na nagłówku w którym kierunku są posortowane dane. Może ktoś wie jak wymusić wyświetlenie takiej strzałki gridowej, wtedy pierwszy problem automatycznie się rozwiąże :)