有时向下键不能在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方法做了一些艰苦的工作……所以当我禁用它时,eberything很好.
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);
});
}
}