2016-06-10 6 views
0

ich eine Datagridview in einer Form haben, und ich habe den folgenden Code:C# Datagridview wie programmatisch feuern das ausgewählte Ereignis

//Scroll to the last row 
      gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
      // select new row 
      gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 

Ich weiß, dass .Selected das Selection Ereignis ausgelöst doenst:

private void gridStore_SelectionChanged(object sender, EventArgs e) 
     { 

     } 

Und ich muss dieses Ereignis auslösen, wenn die Zeile programmatisch ausgewählt wird.

Irgendwelche Anhaltspunkte?

+0

Versuchen Sie Einstellungen dgv.CurrentCell oder Aufruf der gridStore_SelectionChanged Ereignis manuell nach Ihrem Code? – Niklas

Antwort

1

Wie Sie richtig herausgefunden, wenn das SelectMode Satz FullRowSelectSelectionChanged Ereignis wird nicht ausgelöst.

Sie haben zwei Problemumgehungen, um dieses Problem zu beheben.

Option 1

Trennen Sie die Logik, die Sie gemeinsam zwischen gridStore_SelectionChanged durchführen möchten und wenn Sie die Auswahl explizit aktualisieren und das Verfahren in beiden Veranstaltungen nennen.

private void DoSomething() 
{ 

} 

private void gridStore_SelectionChanged(object sender, EventArgs e) 
{ 
    ... 
    DoSomething(); 
} 

und

gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
// select new row 
gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 

DoSomething(); 

Option 2:

Explizit lösen Sie das Ereignis nach der Auswahl zu treffen (nicht bevorzugt, Art und Weise, aber funktioniert).

gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
// select new row 
gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 
gridStore_SelectionChanged(this, new EventArgs()) 
Verwandte Themen