none
請問 DataGridView 新增資料時按下 ESC 取消,如何判斷該Row 的被取消 RRS feed

  • 問題

  •  

    各位好:

          目前遇到的問題是,我在DataGridView 中使用 RowValidating 事件做資料判斷

    可是當我在新增中按 ESC 取消時也會進到這個事件,然後它就會發生【並未將物件參考設定為物件的執行個體】

    我在事件中判斷 datagridview1.Rows[e.RowIndex] == null 也沒有用,雖然並不會照成程式的中斷

     

    請問我要如何知道這筆資料是被取消的

     

     

    謝謝

     

    2008年4月24日 上午 02:57

解答

  • HI,

     

    我的情形和您一樣,  DataGridView 在已有資料的情況下,按下要【星號】中要編輯的欄位此時畫面上會有多筆資料,一個前面是【筆】,一個前面是【星號】和其他原本的資料,按下 ESC 進入 RowValidating 事件中, 但是會被

     

    If DataGridView1.IsCurrentRowDirty Then

     

    判斷式阻擋掉, 不會發生錯誤

     

    tihs

    2008年4月24日 上午 05:41

所有回覆

  • Hi,

     

    我在RowValidating 事件處理程序中加入以下的程式, 判斷使用者在第二個欄位填入的內容是否為ABC, 如果不是則顯示錯誤訊息, 程式很正常, 不會有您說的情形:

     

            If DataGridView1.IsCurrentRowDirty Then
                If DataGridView1.Rows(e.RowIndex).Cells(1) IsNot Nothing Then
                    Dim strData As String = DataGridView1.Rows(e.RowIndex).Cells(1).Value.ToString().Trim()
                    If strData <> "ABC" Then
                        MessageBox.Show("Invalid Data")
                        'e.Cancel = True
                    End If
                End If
            End If

     

    tihs

    2008年4月24日 上午 04:12
  • tihs 您好:

       

         我目前測試的結果如下

         1.DataGridView 在沒有任何一筆資料的情況下,按下要編輯的欄位

           此時畫面上會有兩筆,一個前面是【筆】,一個前面是【星號】,按下 ESC

          【筆】的那筆會消失,但並沒有進入 RowValidating 事件中。

     

         2.DataGridView 在已有資料的情況下,按下要【星號】中要編輯的欄位

           此時畫面上會有多筆資料,一個前面是【筆】,一個前面是【星號】和其他原本的資料

           ,按下 ESC 進入 RowValidating 事件中 然後就發生錯誤。

     

    這是我目前測試結果,不知有無辦法避免

     

     

    謝謝

    2008年4月24日 上午 05:27
  • HI,

     

    我的情形和您一樣,  DataGridView 在已有資料的情況下,按下要【星號】中要編輯的欄位此時畫面上會有多筆資料,一個前面是【筆】,一個前面是【星號】和其他原本的資料,按下 ESC 進入 RowValidating 事件中, 但是會被

     

    If DataGridView1.IsCurrentRowDirty Then

     

    判斷式阻擋掉, 不會發生錯誤

     

    tihs

    2008年4月24日 上午 05:41
  •  

    tihs 您好:

     

          可以了,謝謝

     

         

    2008年4月24日 上午 06:11