Entwickler-Ecke

WinForms - DataGridViewComboBoxColumn Ereignisse abfangen


mats74 - Do 16.02.12 14:42
Titel: DataGridViewComboBoxColumn Ereignisse abfangen
Hallo zusammen

Ich habe ein DataGridView mit einer DataGridViewComboBoxColumn-Spalte.

Meine kleine Aufgabe ist es nun, auf die Ereignissee dieses Controls der Spalte zu reagieren.
Also z.B. auf des SelectIndexChanged-Ereigniss (wie bei einer "normalen" ComboBox) sollte eine Validierung der Zelle und danach der Fokus einer anderen Zelle ausgeführt werden.

Der einzige Weg auf dieses Control zuzugreifen habe ich bis jetzt im EditingControlShowing-Ereigniss gefunden:

C#-Quelltext
1:
2:
3:
4:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            e.Control.Text = "Hallo allerseits";
        }

Wie komme ich an die Ereignisse dieses Controls ran?


Ralf Jansen - Do 16.02.12 15:10

e.Control auf den tatsächlich verwendete Controltyp casten dann siehst du auch die Events.

Also z.b.


C#-Quelltext
1:
2:
3:
ComboBox box = e.Control as ComboBox;
if(box != null)
   box.SelectedIndexChanged += meinEventHandler;


mats74 - Do 16.02.12 15:13

Ich habe eine Lösung unter folgendem Link [http://stackoverflow.com/questions/4827182/how-to-bind-datagridviewcomboboxcolumn-to-a-onchange-event-c] gefunden.
Die verschiedenen Ereignisse der Combobox können dadurch beliebig verwendet werden.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 5
                && e.Control is ComboBox)
            {
                ComboBox comboBox = e.Control as ComboBox;
                comboBox.SelectedIndexChanged += IrgendeineMethode;
            }
        }

private void IrgendeineMethode(object sender, EventArgs e)
        {
            MessageBox.Show("Methode funktioniert");
        }

Aufgabe gelöst :beer: .


mats74 - Do 16.02.12 15:15

Sorry Ralf, ich habe dein Post zu spät gesehen, aber danke dafür.
Funktioniert natürlich einwandfrei.