加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 有时向下键不能在DataGridView上运行

发布时间:2020-12-15 22:27:34 所属栏目:百科 来源:网络整理
导读:有时向下键不能在DataGridView上运行. 我不知道为什么,特别是它很奇怪,因为没有代码分配给DataGridView的键的事件… SelectionMode is FullRowSelect Multiselect is False 这段代码没有帮助…… private void dataGridView1_PreviewKeyDown(object sender,r
有时向下键不能在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);

                });
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读