DataGridView单元格获得焦点的解决方法

当页面初次加载的时候让DataGridView的某个单元格获得焦点,这个应该是很简单的,只要2句就应该搞定:

dgvPurOrder.CurrentCell = dgvPurOrder.Rows[0].Cells[1];
dgvPurOrder.BeginEdit(false);

可惜效果却不是想的那样,试了很多办法都没解决,后来还是无意中找到了,一个很绝的解决方法,与君共享:

原文地址:http://social.msdn.microsoft.com/Forums/es-ES/visualcshartzhchs/thread/fb93614a-0775-4af0-9513-d2ec1b8007d8

设置 CurrentCell 可以达到定位焦点单元格的作用,若需要直接进入编辑状态则需要使用 BeginEdit(false) 方法,但在 FormLoad 事件中调用此方法不能达到预期效果(可能是被抢了焦点),使用延时技艺能够解决此问题。

void SetFocusedCell(DataGridView gv, DataGridViewCell cell)
{
  using (BackgroundWorker bg = new BackgroundWorker())
  {
    bg.DoWork += (o, e) => { System.Threading.Thread.Sleep(5); };
    bg.RunWorkerCompleted += (o, e) =>
    {
      gv.CurrentCell = cell;
      gv.BeginEdit(false);
    };
    bg.RunWorkerAsync();
  }
}

 

posted on 2013-04-20 20:18  冷月孤峰  阅读(3729)  评论(0)    收藏  举报