WinForm中DataGridView驗證單元格輸入的是數字

     事件:DataGridView驗證單元格輸入的是數字,DataGridView源數據是從數據庫讀取的。

     需求:當用戶輸入的不是數字的時候需要提示信息(數據是直接綁定數據庫的,因此dataGridView有自己的報錯功能,我們需要屏蔽掉它,顯示自己的錯誤提示!)

     實現: 選擇DataGridView的CellValidating事件

      (1)  驗證整數:

 1  private void gridPlant_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
 2         {
 3             if (e.RowIndex > -1 && e.ColumnIndex > -1)
 4             {
 5                 DataGridView grid = (DataGridView)sender;
 6                 grid.Rows[e.RowIndex].ErrorText = "";
 7                //這裏最好用列名,而不是列索引號做判斷
 8                 if (grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_IDLE" || grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_WORKING" || grid.Columns[e.ColumnIndex].Name == "WO0011_NUMBER_ON_SITE")
 9                 {
10 
11                     Int32 newInteger = 0;
12                     if (!int.TryParse(e.FormattedValue.ToString(), out newInteger))
13                     {
14                         e.Cancel = true;
15                         grid.Rows[e.RowIndex].ErrorText = "Please enter a int number!";
16                         MessageBox.Show("the value is not nubmer , Pleaser enter a int number !");
17                         return;
18                     }
19                 }
20             }
21         }

     (2) 驗證十進制數:

 1  private void gridBriefsOlder_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
 2         {
 3             if (e.RowIndex > -1 && e.ColumnIndex > -1)
 4             {
 5                 DataGridView grid = (DataGridView)sender;
 6                 grid.Rows[e.RowIndex].ErrorText = "";
 7 
 8                 if (grid.Columns[e.ColumnIndex].Name == "WO0009_APPROXIMATE_COMPLETION_PERCENTAGE1")
 9                 {
10                     try
11                     {
12                         Convert.ToDecimal(e.FormattedValue);
13                     }
14                     catch
15                     {
16                         e.Cancel = true;
17                         grid.Rows[e.RowIndex].ErrorText = "Please enter a number!";
18                         MessageBox.Show("the value is not nubmer , Pleaser enter a  number !");
19                         return;
20                     }
21                 }
22             }
23         }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章