有时 up down 键在 DataGridView
上不起作用。
我不知道为什么,尤其是它很奇怪,因为没有为 DataGridView
的键事件分配代码...
SelectionMode is FullRowSelect
Multiselect is False
这段代码没有帮助...
private void dataGridView1_PreviewKeyDown(object sender, reviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
e.IsInputKey = true;
break;
case Keys.Up:
e.IsInputKey = true;
break;
}
}
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Down)
{
e.Handled = true;
}
else if (e.KeyData == Keys.Up)
{
e.Handled = true;
}
}
有什么线索吗?
附言
似乎 SelectionChanged
方法做了一些艰苦的工作...所以当我禁用它时,eberthing 很好。
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
// Some hard work
}
所以问题是如何优化它。
我假设使用 Timer,所以当用户在 1 秒后停止选择箭头键时
应执行 SelectionChanged
方法的代码。
关于最好的方法有什么线索吗?
最佳答案
在执行 SelectionChanged
期间,网格以某种方式失去了焦点。
这可能是由于动态创建和插入用户控件而发生的。
所以我做了三个调整,现在好了!
bool canDoHardWork = true;
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (canDoHardWork)
{
int interval = 2000; // Just 2 seconds
Task.Factory.StartNew(() =>
{
canDoHardWork= false;
Thread.Sleep(interval);
this.BeginInvoke((Action)(() =>
{
PopulateTabs(); // Very hard work
dataGridView1.Focus();
canDoHardWork= true;
}), null);
});
}
}
关于c# - 有时上下键在 DataGridView 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35481991/