能给个简单的例子吗?我想在某单元格输入不是数字时激发该事件?

解决方案 »

  1.   

    try
    {
       int i=int.parse(datagridview1.currentcell.value.tostring());
    }
    catch
    {
       messagebox.show("输入的不是数字!");
       datagridview1.currentcell.value=null;
       return;
       
    }
      

  2.   

    有一个方法:RaiseDataError,不过这个方法是protected类型的,如果你的DataGridView是继承的,可以把这个方法在一个Public类型的方法中调用来产生事件。
      

  3.   

      private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
                {
                    IsAllNumber(this.dataGridView1.CurrentCell.Value.ToString().Trim()) == true ? MessageBox.Show("纯数字!") : MessageBox.Show("不是纯数字!");
                }
            }
            #region 判断文本是否纯数字组合
            /// <summary>
            /// 名称:IsAllNumber
            /// 判断文本是否全数字组成函数1(推荐使用)
            /// </summary>
            /// <param name="text">需判断的文本或字符串</param>
            /// <returns>返回true代表纯数字,否则为非纯数字</returns>
            public static bool IsAllNumber(string text)
            {
                foreach (char tempchar in text.ToCharArray())
                {
                    if (tempchar == '.')
                    {
                        return false;
                    }
                }
                Regex objNotNumberPattern = new Regex("[^0-9.-]");
                Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
                Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
                String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
                String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
                Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
                return !objNotNumberPattern.IsMatch(text) && !objTwoDotPattern.IsMatch(text) && !objTwoMinusPattern.IsMatch(text) && objNumberPattern.IsMatch(text);
            }
            #endregion
      

  4.   

      private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
                {
                    IsAllNumber(this.dataGridView1.CurrentCell.Value.ToString().Trim()) == true ? MessageBox.Show("纯数字!") : MessageBox.Show("不是纯数字!");
                }
            }
            #region 判断文本是否纯数字组合
            /// <summary>
            /// 名称:IsAllNumber
            /// 判断文本是否全数字组成函数1(推荐使用)
            /// </summary>
            /// <param name="text">需判断的文本或字符串</param>
            /// <returns>返回true代表纯数字,否则为非纯数字</returns>
            public static bool IsAllNumber(string text)
            {
                foreach (char tempchar in text.ToCharArray())
                {
                    if (tempchar == '.')
                    {
                        return false;
                    }
                }
                Regex objNotNumberPattern = new Regex("[^0-9.-]");
                Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
                Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
                String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
                String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
                Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
                return !objNotNumberPattern.IsMatch(text) && !objTwoDotPattern.IsMatch(text) && !objTwoMinusPattern.IsMatch(text) && objNumberPattern.IsMatch(text);
            }
            #endregion
      

  5.   

    你也可以用反射调用那个 protected 的函数
      

  6.   

    CellFormatting事件会在文本将要显示时被触发,CellParsing事件会在输入的文本需要被解析时被触发,象你这个问题,在CellParsing中处理好了,最好有对应的CellFormatting处理方法。
      

  7.   

    datatable里面,改字段设置成int型,这样,输入文字,焦点移开,就会触发dataerror事件