Autor Beitrag
Questioneer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 28.10.08 11:29 
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 :

ausblenden 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:
ausblenden volle Höhe 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++)
                {
                    forint 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 28.10.08 14:13 
user profile iconQuestioneer hat folgendes geschrieben Zum zitierten Posting springen:
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?

user profile iconQuestioneer hat folgendes geschrieben Zum zitierten Posting springen:
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!

user profile iconQuestioneer hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: 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