c#DataGridView离开事件使Windows窗体无响应

科尼利厄斯

我在c#-4.0 Windows Form应用程序中遇到了一些奇怪的事情,但不确定是什么原因引起的。基本上,我有一个带有DataGridView和一些文本框的表单,在我的网格中,我有一个离开事件,Rows[0].Cells[0]事件选择用户何时离开DataGridView。

现在,如果我单击网格中的一个单元格,请编辑该单元格,然后直接单击到文本框中,则离开事件将正确触发并选择行/单元格[0],但此时表单将变得无响应。

如何使用Visual Studio复制(我正在使用2010 Pro)

  • 创建新的WindowsFormApplication
  • DataGridViewTextBox添加到窗体。
  • 现在,在Form1_Load事件中添加以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dtTmp = new DataTable("temp");
        dtTmp.Columns.Add("col 1", typeof(String));
        dtTmp.Columns.Add("col 2", typeof(String));
    
        DataSet dsTmp = new DataSet();
        dsTmp.Tables.Add(dtTmp);
    
        DataRow dr1 = dsTmp.Tables["temp"].NewRow();
        dr1["col 1"] = "aaa";
        dr1["col 2"] = "12";
        dsTmp.Tables["temp"].Rows.Add(dr1);
    
        DataRow dr2 = dsTmp.Tables["temp"].NewRow();
        dr2["col 1"] = "bbb";
        dr2["col 2"] = "1234";
        dsTmp.Tables["temp"].Rows.Add(dr2);
    
        dataGridView1.DataSource = dsTmp;
        dataGridView1.DataMember = "temp";
        dataGridView1.Refresh();
    }
    

接下来,为DataGridView1创建一个Leave事件,并添加以下代码:

private void dataGridView1_Leave(object sender, EventArgs e)
{
    if (dataGridView1.Rows.Count > 0)
    {
        dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
    }
}

调试并执行以下步骤:

  1. 单击col 1第二行中包含“ bbb”的单元格
  2. 在该单元格中键入其他内容。
  3. 在不单击Enter,空格,Tab,向下或向右箭头的情况下,单击您添加到表单文本框

现在尝试关闭表单,它不会关闭。

我的dataGridView1.CurrentCell电话怎么了?如果选择并编辑第一行,则窗体将很好地关闭,但如果是第二行,则不会。

拉尔斯科技

不知道它是如何干扰的,但是该Leave事件正在干扰某些东西。通常,请尝试在Leave事件之后运行代码

void dataGridView1_Leave(object sender, EventArgs e) {
  this.BeginInvoke(new Action(() => {
    if (dataGridView1.Rows.Count > 0) {
      dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
    }
  }));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c#DataGridView离开事件使Windows窗体无响应

来自分类Dev

C#DataGridView复选框已选中事件

来自分类Dev

防止C#DataGridView更改当前行的事件

来自分类Dev

C#DataGridView绑定

来自分类Dev

C#DataGridView£代替$

来自分类Dev

C#DataGridView£代替$

来自分类Dev

带有日期值和时间值的 C# windows 窗体 datagridview cellformating 事件

来自分类Dev

C#DataGridView红色X

来自分类Dev

C#dataGridView重入错误

来自分类Dev

TabPanel中的C#datagridview

来自分类Dev

C#DataGridView行着色

来自分类Dev

Windows窗体中使用C#的DataGridView

来自分类Dev

用户更改单元格(只读)值时要捕获的C#DataGridView事件

来自分类Dev

用户更改单元格(只读)值时要捕获的C#DataGridView事件

来自分类Dev

验证DataGridView Windows窗体

来自分类Dev

Windows窗体刷新datagridview

来自分类Dev

索引超出范围c#datagridview

来自分类Dev

C#DataGridView获取选定的行号异常

来自分类Dev

C#DataGridView不使用DataTable更新

来自分类Dev

Newtonsoft Json Deserlize作为C#Datagridview

来自分类Dev

C#DataGridView重入调用错误

来自分类Dev

C#DataGridView获取选定的行号异常

来自分类Dev

在C#DataGridView(Winforms)中添加Combox

来自分类Dev

C#datagridview行切换

来自分类Dev

XML文件中的C#dataGridView

来自分类Dev

如何清除C#Windows窗体中的DataGridView?

来自分类Dev

C#防止DataGridView离开

来自分类Dev

Windows窗体DataGridView中的图像

来自分类Dev

Windows 窗体 DataGridView 快速加载