C#中dataGridView的网格输入框内实时监控输入的值,需要两个事件一起用,对提示框也进行避免重复提示,和图标显示

 /// <summary>
        /// 输入格式的限制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView3Editing(object sender, DataGridViewEditingControlShowingEventArgs e)
       {
            //检测是被表示的控件还是DataGridViewTextBoxEditingControl     
            if (e.Control is DataGridViewTextBoxEditingControl)
            {                DataGridView dgv = (DataGridView)sender;
                //取得被表示的控件             
                DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;                   //事件处理器删除                tb.KeyPress -= new KeyPressEventHandler(dataGridViewTextBox_KeyPress);                  
                if (dgv.CurrentCell.OwningColumn.Name == "date3")
                {                    // KeyPress事件处理器追加     
                    tb.KeyPress += new KeyPressEventHandler(dataGridViewTextBox_KeyPress);
                }
            }
        }
        /// <summary>
        /// 对输入键盘的监控
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridViewTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((int)e.KeyChar >= 48 & (int)e.KeyChar <= 57 | (int)e.KeyChar == 8)//| (int)e.KeyChar == 46  .符号
            {
                e.Handled = false;
            } else {
                messgeNum = messgeNum + 1;//此处避免在输入一次提示三次的信息框
                if (messgeNum == 1)
                {
                MessageBox.Show("请输入正确的整数", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);//!
                }
                else if(messgeNum == 3)
                {
                    messgeNum = 0;
                }
                e.Handled = true;
            }
        }
 

猜你喜欢

转载自blog.csdn.net/penghao_1/article/details/83022629