获得焦点的终极解决方法
一般情况下,让控件获得焦点只要 控件ID.Focus()即可了,但是有些时候这样是不行的,我就遇到过很特别狠痛苦的,直接上代码吧
一 让DataGridView控件的指定单元格获得焦点
#region 让DataGridView控件的指定单元格获得焦点 /// <summary> /// 让DataGridView控件的指定单元格获得焦点 /// 采用异步延迟的方式 /// </summary> /// <param name="gv"></param> /// <param name="cell">要获得焦点的单元格</param> public static 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; System.Windows.Forms.SendKeys.Send("^a");//将单元格的内容全选 gv.BeginEdit(false); }; bg.RunWorkerAsync(); } } #endregion
二 让文本框获得焦点
#region 让文本框获得焦点 /// <summary> /// 让文本框获得焦点 /// 采用异步延迟的方式 /// </summary> /// <param name="ctl"></param> public static void SetFocusedTextBox(Control ctl) { using (BackgroundWorker bg = new BackgroundWorker()) { bg.DoWork += (o, e) => { System.Threading.Thread.Sleep(5); }; bg.RunWorkerCompleted += (o, e) => { ctl.Focus(); ctl.Select(); System.Windows.Forms.SendKeys.Send("^a");//将单元格的内容全选 }; bg.RunWorkerAsync(); } } #endregion
浙公网安备 33010602011771号