none
如何限制DataGridView的输入类型 RRS feed

答案

  • 直接把DataGridView绑定到DataTable,自己就会主动检测类型是否匹配的(注意,您必须重写DataError事件,这样一旦输入非法数值,您无法编辑其它列,直到更正数据为止)。

    namespace WinFormCSharp
    {
        public partial class Form1 : Form
        {
            DataTable dt = new DataTable();
            DataGridView dv = new DataGridView();

            public Form1()
            {
                InitializeComponent();
                dt.Columns.Add("Id"typeof(int));
                dt.Columns.Add("Name"typeof(string));
            }

            private void Form1_Load(object senderEventArgs e)
            {
                for (int i = 1i < 11i++)
                {
                    dt.Rows.Add(i,"Name"+i);
                }
                dt.AcceptChanges();
                dv.Parent = this;
                dv.Dock = DockStyle.Fill;
                dv.DataSource = dt;
                dv.ShowCellErrors = true;
                dv.DataError += new DataGridViewDataErrorEventHandler(dv_DataError);
            }

            void dv_DataError(object senderDataGridViewDataErrorEventArgs e)
            {
                dv.UpdateCellErrorText(e.ColumnIndexe.RowIndex);
                e.ThrowException = false;
            }
          
        }
    }

    自己试试看把Id改成非数字的会什么情况……


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月30日 6:30
    版主