DataGridView是.net2.0的一个新增数据控件,功能比DataGrid增强了很多,但是并没有CellKeyPress事件来限制文本列的输入。

我通过EditingControlShowing事件解决这个问题.

同时也可实现取值操作

  


        private void TextBoxDec_KeyPress(object sender, KeyPressEventArgs e)
        {
              
if ((Convert.ToInt32(e.KeyChar) == 8))
            {
                e.Handled 
= false;
            }
            
else
            {
                Regex numRegex 
= new Regex(@"^(-?[0-9]*[.]?[0-9]*)$");
                Match Result 
= numRegex.Match(Convert.ToString(((TextBox)sender).Text + e.KeyChar));

                
if (Result.Success)
                {
                    e.Handled 
= false;
                }
                
else
                {
                    e.Handled 
= true;
                }
            }
            TextBox tb 
= (TextBox)sender; //可通过此方法获取当前值 tb.text
        }
     
#endregion


      
#region 编辑行事件
        
private void dgvItelList_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            
if (this.dgvItelList.CurrentCell.ColumnIndex == 行索引)
            {
                e.Control.KeyPress 
+= new KeyPressEventHandler(TextBoxDec_KeyPress);
            }

            
if (this.dgvItelList.CurrentCell.ColumnIndex == 行索引)
            {
                e.Control.KeyPress 
+= new KeyPressEventHandler(TextBoxDec_KeyPress);
            }

        }
        
#endregion

 

纯属个人的小经验,发在这里是希望以后遇到此类问题的兄弟快速解决问题

相关文章: