如题。有个dataGridview1,我已设置其ReadOnly属性为false,这样绑定数据源后就可以编辑其中的内容,但现在有的栏只允许输入数字、小数点,不能敲入文本。我知道像TextBox之类的控件可以用KeyPress()事件来加以控制,不知道dataGridView这样的控件如何设置?另外想知道可以为某栏设置其ImeMode属性吗?谢谢!

解决方案 »

  1.   

    限制字符的类型可以由正则实现。            string pattern = @"^[0-9.]*$";
                Regex regex = new Regex(pattern);
                if (regex.IsMatch(inputValue))
                {
                    MessageBox.Show("可以输入");
                }
                else
                {
                    MessageBox.Show("格式有误");
                }
      

  2.   

    如果你的数据源类型就是float或double的话,datagridview会自动限定,否则就用datagridview中的rowvalidating或者cellvalidataing事件去处理吧。
      

  3.   

    private void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
            {
                
                dgv.Rows[e.RowIndex].ErrorText = "";
                float newfloat;
                if (this.dgv.Rows[e.RowIndex].IsNewRow) { return; }            if (e.ColumnIndex == 6)
                {                if (!float.TryParse(e.FormattedValue.ToString(),out newfloat) || newfloat < 0)
                        
                    {
                        e.Cancel = true;
                        this.dgv.Rows[e.RowIndex].ErrorText = "输入的不是数字";
                        Interaction.MsgBox("输入的不是数字",MsgBoxStyle.Information,"提示");
                    }
                }
    }