【发布时间】:2014-06-20 21:25:52
【问题描述】:
我有一个使用 dataGridView 的 Winform 应用程序。我想要做的是,当用户单击单元格时,它将单元格内容显示到文本框。这是我处理点击事件的代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
textBox1.Text = row.Cells["Name"].Value.ToString();
}
}
在 Windows 7 中一切正常。但是,当我在 Windows XP 下运行它时,出现了问题。
我会用一个简单的例子来解释这个问题。我用一个按钮向dataGridView添加一些数据:
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Add("John","123");
dataGridView1.Rows.Add("Rob","456");
}
所以,如果你点击第一行,文本框会显示“John”;如果您单击第二行,它将是“Rob”。这在 Windows 7 下可以正常工作,如果您执行单击时有一些延迟(如 1 秒),它在 Windows XP 下也可以正常工作。但是,如果您执行快速单击,例如第一行和第二行之间的一秒内 5~6 次,很多时间,即使您单击第一行或其他方式,文本框也会显示“Rob”。它只是没有根据其行显示正确的数据。
我尝试在每次点击之间启用禁用 dataGridView / 刷新 dataGridView,但它们都不起作用。唯一有效的是延迟鼠标单击:移动光标位置或单击后显示消息框,它们只是解决方法,但不是真正的解决方案。
有没有人经历过这种情况?这是 Windows XP 的“错误”吗?顺便说一下,我的开发环境是Window 7 with VS2010。感谢您提前提供任何帮助。
【问题讨论】:
-
如何延迟鼠标点击?也许你可以使用睡眠? System.Threading.Thread.Sleep(1000) 将延迟 1 秒,但另一方面可能会很慢......而且我不确定这是真正的解决方案
-
鼠标点击后,我会显示一个消息框来延迟点击单元格。
标签: c# .net winforms datagridview