当前位置: 首页 > 编程语言 > C#

在TabControl中选择Tabs而不窃取焦点分享

时间:2023-04-11 00:33:40 C#

在TabControl中选择Tabs而不窃取焦点使用TabControl.SelectTab("...")来显示tabs,同时它也提供选项Cardfocus。我想显示一个特定的选项卡但保持焦点。我在网格中有几行数据。根据所选行的属性,我显示不同的选项卡以具有不同的UI布局。但是当使用箭头键滚动行时,焦点会切换到选定的选项卡-我不想发生这种情况。谢谢。我认为没有内置函数,但你可以这样做:privateboolskipSelectionChanged=false;privatevoiddataGridView_SelectionChanged(objectsender,EventArgse){if(skipSelectionChanged)返回;//假设我们决定必须选择tab[0]..this.SelectTabWithoutFocus(this.tabControl1.TabPages[0]);}privatevoidSelectTabWithoutFocus(TabPagetabPage){this.skipSelectionChanged=true;//“this”是我的例子中的表单,所以你得到当前聚焦的控件//(ActiveControl),备份它,并在Tab激活后重新设置它varprevFocusedControl=this.ActiveControl;if(this.ActiveControl!=null){this.tabControl1.SelectedTab=tabPage;prevFocusedControl.Focus();}这。skipSelectionChanged=false;}这里我备份了当前获得焦点的控件,选择了想要的选项卡,最后将焦点设置到原来的控件上。跳过布尔值是必要的,因为将焦点放在网格上会再次触发SelectionChanged事件,从而导致无限循环。您可以尝试在设置所选选项卡之前禁用TabControl,然后重新启用它。这将防止它成为焦点。我在带有一些控件的选项卡控件上对其进行了测试,没有看到任何视觉变化,但您必须在您的UI中尝试它以查看它是否适合您。tabControl1.Enabled=false;tabControl1.SelectTab("tabPage4");tabControl1.Enabled=true;为了安全起见,您可以使用该行在finally块中重新启用TabControl,以确保它不会被禁用。这会选择选项卡,同时将焦点保持在上面,如上所示:tc.TabPages[0].Enabled=false;tc.SelectTab(0);tc.TabPages[0].Enabled=true;tc这里是TabControl类型的实例(即它是我的选项卡控件,它有一些“选项卡页”)。这对我有用。我的意图是使用左右箭头(箭头)循环浏览这些标签页,即当我前进(通过Key.Right)并到达最后一个标签页时,我希望焦点位于[0]上而不激活DataGridViewI'm在该页面中,当我向后(按Key.Left)并到达[0]时,我希望启用[tc.TabCount-1],这是最后一个。这种情况的代码是:tc.TabPages[tc.TabCount-1].Enabled=false;tc.SelectTab(tc.TabCount-1);tc.TabPages[tc.TabCount-1].Enabled=true;完整的代码是:privateboolKeyTc(System.Windows.Forms.KeyskeyData){if(keyData==K.Left&&tc.SelectedIndex==0){tc.TabPages[tc.TabCount-1].Enabled=false;tc.SelectTab(tc.TabCount-1);tc.TabPages[tc.TabCount-1].Enabled=true;返回真;}elseif(keyData==K.Right&&tc.SelectedIndex==tc.TabCount-1){tc.TabPages[0].Enabled=false;tc.SelectTab(0);tc.TabPages[0].Enabled=true;返回真;}返回假;}这个boolKeyTc返回到switch语句中的一个case,Keyevaluationfor:protectedoverrideboolProcessCmdKey(refMessagekeyMsg,KeyskeyData){switchkeyData{...}}基于“JeffOgata提出的解决方案:你可以尝试在禁用TabControl之前设置选定的选项卡,然后重新启用它。这将阻止它获得焦点”,这是我的解决方案:Enabled=true;};注意:这段代码使用了DevExpress"DevExpress.XtraTab.XtraTabControl"以上是C#学习教程:在TabControl中选中tab,不窃取焦点分享的全部内容,如果对大家有用以及需要了解更多C#学习教程,希望大家多多关注~本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如有转载请注明出处: