C# “数据错误”对话框

C# “数据错误”对话框,c#,winforms,C#,Winforms,我得到一个datagridview默认错误对话框。上面说的是处理dataerror事件。 我正在从数据表加载myy DGV中的数据。当我尝试添加新行时,我单击带有(*)的空行。当我开始在新行单元格中键入一些值时,就会显示dataerror并进入infinte循环 DataGridViewDataError.context = display. Error: Index 3 does not have a value. 我的网格有3行,这里新行将有索引3 这是DGV加载的代码 privat

我得到一个datagridview默认错误对话框。上面说的是处理dataerror事件。 我正在从数据表加载myy DGV中的数据。当我尝试添加新行时,我单击带有(*)的空行。当我开始在新行单元格中键入一些值时,就会显示dataerror并进入infinte循环

DataGridViewDataError.context = display. 
Error: Index 3 does not have a value. 
我的网格有3行,这里新行将有索引3

这是DGV加载的代码

 private void frmPlant_Load(object sender, EventArgs e)
    {
        Program.fMain = this;
        Program.LoadAllForms();
        string selectCommand = "select * from T1";
        FillData(selectCommand);

    }
    private void FillData(string selectCommand)
    {
        using (SQLiteConnection conn = new SQLiteConnection(connString))
        {
            conn.Open();
            dataGridView1.AutoGenerateColumns = true;

            da = new SQLiteDataAdapter("selectCommand", connString);
            ds = new DataSet();

            commandBuilder = new SQLiteCommandBuilder(da);

            da.Fill(ds, "T1");
            dt = ds.Tables[0];
            dataGridView1.DataSource = ds.Tables[0];
            dataGridView1.DataMember = "T1";
            dataGridView1.Columns["TID"].ReadOnly = true;
        }

    }
我不知道代码中到底发生了什么。已处理DataError事件。不确定UserAddDrows、RowsValidating是否有用

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show(e.Context.ToString());
            e.Cancel = true;
        }
多谢各位
孙不太清楚。尝试用System.Diagnostics.Debug.WriteLine替换MessageBox.Show语句,并在RowsValidating事件中执行相同操作。MessageBox在这种情况下可能会导致问题,因为它“暂停”处理

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine(e.Context.ToString()); 
    e.Cancel = true; 
} 

MSDN声明如下:

与此事件关联的DataGridViewDataErrorEventArgs对象的ColumnIndex和RowIndex属性通常表示发生数据错误的单元格。但是,当错误发生在外部数据源中时,该数据源可能不提供发生错误的列。在这种情况下,ColumnIndex属性通常表示出错时当前单元格的列


使用这些属性可以找出发生错误的列

如果为每列定义的数据类型不匹配,就会发生这些情况。确保!dataGridView1\u DataError事件给出的e.Rowindex=3和e.colindex=-1与nawfal建议的不同,我将尝试不将TID列设置为只读。执行此操作并查看RowIndex和ColumnIndex属性包含哪些值。System.Diagnostics.Debug.WriteLine将输出写入何处?Visual Studio输出窗口;查看->输出;Ctrl+W,O