Entwickler-Ecke
WinForms - Button in jeder Zelle eines DGV hosten.
Questioneer - Di 28.10.08 11:29
Titel: Button in jeder Zelle eines DGV hosten.
Hi,
ich möchte in jeder Zelle eines DGV von Begin an einen Button hosten.
Wenn ich das per Klick auf die einzelne Zelle erledigen möchte, d.h. dass
der Button erst dann sichtbar wird funktioniert das so :
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void dgBmpDaten_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { Button cmdColDlg = new Button(); cmdColDlg.Dock = DockStyle.Right; cmdColDlg.Name = "cmdColorDialog"; cmdColDlg.Text = ">C<"; cmdColDlg.Width = 25; if (!dgBmpDaten.EditingPanel.Controls.ContainsKey(cmdColDlg.Name)) { dgBmpDaten.EditingPanel.Controls.Add(cmdColDlg);
} cmdColDlg.BringToFront(); } |
also soweit so gut.
Nun möchte ich aber wie gesagt dass alle Zellen des DGV mit einem Button ausgestattet sind sobald das DGV angezeigt wird.
Hier zeige ich die Zellen an:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| . . . . . iOffBmpDat = btBmpBytes[10]; int iCheck = 0; for (int k = 0; k <= iGridWidth-1; k++) { for (int l = 0; l <= iGridHeight-1; l++) { for( int m = 0; m <=2; m++) { if((btBmpBytes[18]%2)!= 0) { if (iCheck == 9) { iOffBmpDat+=3; iCheck = 0; }
} btRGB_Values[m] = btBmpBytes[iOffBmpDat]; strRGB_Values = string.Concat(string.Concat(btRGB_Values[0].ToString()+ " / ", btRGB_Values[1].ToString()) + " / ", btRGB_Values[2].ToString()); iOffBmpDat ++; iCheck++; } dgBmpDaten.Rows[k].Cells[l].Value = strRGB_Values; strPixTable[k, l] = strRGB_Values;
} } } |
Wie verbinde ich diese beiden Codes. Ein anderes Ereignis kanns doch nicht sein, der Code muss doch aus
private void dgBmpDaten_CellEndEdit(object sender, DataGridViewCellEventArgs e) raus ... ?
Vielen Dank für eure Mühe und Hilfe
Questioneer ;)
JüTho - Di 28.10.08 12:57
Hallo,
es ist etwas anderes. Das DataGridView ist so aufgebaut, dass es zwischen der Darstellung und der Bearbeitung unterscheidet (das spart wahrscheinlich Ressourcen). Deshalb gibt es u.a. das EditingControl.
Für Deine Lösung ist aber die DataGridViewButtonColumn-Klasse vorgesehen. Hast Du ausprobiert, ob das Deinen Ansprüchen entspricht?
Gruß Jürgen
PS. Kannst mir mal jemand - z.B. Du - erklären, wofür man in jeder Zeile einen Button gebrauchen kann? Wenn es sich z.B. um einen Löschen-Befehl handelt, passt doch genauso gut ein einziger Button außerhalb des DGV.
Questioneer - Di 28.10.08 13:56
Hi,
ich stelle in den Zellen Daten dar, nach Klick auf den Button öffnet seich ein Dialog, von welchem aus sich die Daten editieren lassen, wenn das Prg. fertig ist kann ich es Dir gerne schicken ;)
Die DataGridViewButtonColumn - Klasse belegt eine ganze Zelle mit einem Button, ich möchte aber daneben noch Text in der selben zelle darstellen !
Gruß
Questioneer
JüTho - Di 28.10.08 14:13
Questioneer hat folgendes geschrieben : |
| ich stelle in den Zellen Daten dar, nach Klick auf den Button öffnet seich ein Dialog, von welchem aus sich die Daten editieren lassen, |
Ist das wirklich ein großes Plus an Benutzerfreundlichkeit gegenüber einem einzelnen Button, der sich auf die aktuelle Zeile bezieht?
Questioneer hat folgendes geschrieben : |
| wenn das Prg. fertig ist kann ich es Dir gerne schicken ;) |
Da ich keinen Nutzen in dieser Funktionalität sehe, ist das wohl nicht nötig. Trotzdem danke!
Questioneer hat folgendes geschrieben : |
| Die DataGridViewButtonColumn - Klasse belegt eine ganze Zelle mit einem Button, ich möchte aber daneben noch Text in der selben zelle darstellen ! |
Gut, ich verstehe, dass Du dann eine eigene Lösung haben willst. Aber lohnt sich der Mehraufwand? Ich befürchte, dass Du dann eine Komplettlösung "DataGridViewButtonMitTextColumn" benötigst.
Jürgen
Questioneer - Di 28.10.08 14:44
Hi,
der Sinn und Zweck ist einzig "Learning Purposes" (ist ne Abschlußarbeit).
| Zitat: |
Ist das wirklich ein großes Plus an Benutzerfreundlichkeit gegenüber einem einzelnen Button, der sich auf die aktuelle Zeile bezieht?
|
Ja denn es müssen die einzelnen Zellen nicht eine ganze Zeile editiert werden !
Gruß
Questioneer
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!