Hallo,
ich möchte eine Datagridviewcombobox haben, welche mir in dem DropDown-Menü zusätzlich ein kleines Icon anzeigt.
Dazu übergebe ich meine von Datagridviewcomboboxcolumn abgeleiteten Klasse eine ImageList, welche die Icons enthält die angezeigt werden sollen.
Das Problem ist, dass ich die ImageList an das entsprechende EditingControl weiterleiten muss. Dazu übergebe ich die Liste zunächst an meine von Datagridviewcomboboxcell abgeleitete Klasse:
C#-Quelltext
1: 2: 3: 4: 5:
| public DataGridViewComboBoxWithIconColumn(ImageList list, DISPLAYSTYLE displayStyle): base() { list.Tag = displayStyle; this.CellTemplate = new DataGridViewComboBoxWithIconCell(list); } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private static ImageList _iList; public DataGridViewComboBoxWithIconCell() : this(null) {} public DataGridViewComboBoxWithIconCell(ImageList list): base() { if (list != null) _iList = list; } |
Und hier liegt das Problem. Selbst wenn ich die ImageList an das EditingControl übergebe, erstellt das Datagridview scheinbar eine neue Instanz der Datagridviewcomboboxcell und somit ist die Liste nicht mehr verfügbar. Ich habe das erstmal gelöst, in dem ich die Liste in der Datagridviewcomboboxcell in eine statischen Variablen speichere und die Liste nur zuweise, wenn der entsprechende Konstruktor aufgerufen wird. Das funktioniert soweit auch ganz gut für eine Spalte aber sobald ich zwei Spalten verwende überschreibt die zweite Spalte die ImageList und beide Spalten haben dann die Icons von Spalte2, was auch logisch ist, denn die Liste wird ja statisch gespeichert.
Gibt es eine Möglichkeit um das Problem zu umgehen. Es würde wahrscheinlich genügen, wenn ich aus der Cell-Klasse irgendwie auf die Column-Klasse zugreifen könnte um die ImageList aus der Column zu erhalten aber das habe ich noch nicht hingekriegt
.
Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt und bin für jede Hilfe dankbar
.