Winforms C#-将焦点设置为TabPage的第一个子控件
时间:2020-03-05 18:49:02 来源:igfitidea点击:
假设我在" TabControl"中嵌套了一个"文本框"。
加载表单时,我想专注于"文本框"(默认情况下,焦点设置为" TabControl")。
仅在表单的"加载"事件中调用" textbox1.focus()"似乎无效。
通过执行以下操作,我可以将其重点放在:
private void frmMainLoad(object sender, EventArgs e) { foreach (TabPage tab in this.tabControl1.TabPages) { this.tabControl1.SelectedTab = tab; } }
我的问题是:
有没有更优雅的方法可以做到这一点?
解决方案
回答
以下是解决方案:
private void frmMainLoad(object sender, EventArgs e) { ActiveControl = textBox1; }
但是,更好的问题是为什么……我不完全确定答案是什么。
编辑:我怀疑这与窗体和TabControl都是容器这一事实有关,但是我不确定。
回答
尝试将其放在" Form_Shown()"事件中。因为它在容器中,所以放入Form_Load或者什至Form()构造函数都行不通。
回答
我们只需要将Control.Select()添加到此代码中即可。我使用它来在验证过程中出现错误时将重点放在控件上。
private void ShowControlTab(Control ControlToShow) { if (!TabSelected) { if (ControlToShow.Parent != null) { if (ControlToShow.Parent.GetType() == typeof(TabPage)) { TabPage Tab = (TabPage)ControlToShow.Parent; if (WOTabs.TabPages.Contains(Tab)) { WOTabs.SelectedTab = Tab; TabSelected = true; return; } } ShowControlTab(ControlToShow.Parent); } } }
回答
尝试使用textbox1.Select()
代替textbox1.Focus()
。这帮助了我几次。