2012-03-28 11 views
1

Freunde, Ich benutze ein Datagridview Steuerelement in meiner Visual Studio 2005 Windows-Anwendung. Hier habe ich 5 Spalten. Unter diesen 5, 2. (SpalteIndex 1) und 3. Spalte (SpalteIndex 2) haben Text Datentyp und 4. (SpalteIndex 3) und 5. (SpalteIndex 4) haben doppelte Datentypspalte. Jetzt muss ich die Zellenwertlänge für colIndex 1 und 2 überprüfen, ob die eingegebene Wertlänge größer ist als ein bestimmter (10 für colIndex 1 und 100 für colIndex 2) Wert? Wenn ja, dann muss ich eine entsprechende Nachricht anzeigen. Können Sie mir vorschlagen, in welchem ​​Datagridview-Event ich den eingegebenen/getippten Zellenwert überprüfen und den Wert überprüfen soll? Ich habe folgenden Code in CellValidating Ereignis verwendetIst es möglich, die Zellenwertlänge in Datagridview während der Eingabe zu überprüfen?

string columnName = dgView.Columns[e.ColumnIndex].Name; 

     if (dgView.Rows[e.RowIndex].Cells[dgViewColumn.TAN].Value.ToString().Length > 10) 
     { 
      e.Cancel = true; 
      MessageBox.Show(columnName + " must be 10 Digits Long!"); 
     } 

Aber es zeigt columnName der nächsten Spalte. Und da ich eine Funktion für das Gitter habe, wird durch Drücken der Eingabetaste der Fokus auf die nächste Zelle verschoben, es wird der Fehler angezeigt, dass die Operation fehlgeschlagen ist, weil das Programm keine Zellenwertänderung ausführen oder beenden kann. im CellValidating-Ereignis. Bitte hilf mir.

Antwort

3

Ich hoffe, Sie wissen, dass das Ereignis CellValidating für jede Zelle ausgelöst wird, also möglicherweise sehen Sie die Nachricht, da es möglicherweise für den Längenabschnitt der double Spalten des Datentyps fehlschlagen wird.

Sie sollten also überprüfen, dass Sie die erste und zweite Spalte überprüfen und dann die Länge überprüfen.

Sie können auch e.FormattedValue verwenden, um den aktuellen Wert in der Zelle zu erhalten.

auch Sie die MaxInputLength für die Textbox Spalte in den Eigenschaften setzen können (im Fall müssen Sie es)

+0

das Gitter ist kein gebundener Typ. Es ist ein Einstiegsgitter. Wie wird MaxLength eingestellt? – Sukanya

+0

Nun, wenn Sie in den Eigenschaften der Textboxspalte (im Designer) suchen, würden Sie 'MaxInputLength' sehen, die Sie auf 10 oder 100 setzen können, wie Sie – V4Vendetta

+0

Boss benötigen, der Typ der Daten, die eingegeben werden, ist Texttyp und diese Überprüfungen sind durch Code gemacht, so ist es nicht möglich, Textbox Spalte zu bekommen. – Sukanya

Verwandte Themen