问题描述
有A和B两个窗口,A窗口为主窗口,上有一个TabControl控件,其中有三个标签页a1,a2,a3。在B窗口中有个按钮用于更改该Tabcontrol的tabcontrol.SelectedIndex=1;为什么第一次的时候可以成功,之后再点击按钮后,该tabcontrol在A窗口被选中后,其SelectedIndex又变成之前选择的标签页了呢(非1),在A窗口未选中前其SelectedIndex还是所设置的1?求大神解释;
解决方案
解决方案二:
贴个代码看看吧
解决方案三:
实际代码:A.xaml:<Window><Grid><TabControlName="tabcontrol"><TabItemHeader="tabItem1"></TabItem><TabItemHeader="tabItem2"></TabItem></TabControl><Buttonclick="button_Click">点击打开B窗口</Button></Grid></Window>B.xaml:<Window><Grid><Buttonclick="button_Click"></Button></Grid></Window>B.xaml.cs:privatevoidbutton_Click(objectsender,RoutedEventArgse){(App.Current.MainWindowasA).tabcontrol.SelectedIndex=1;}大概的代码如上所示,有哪位大神给解释下啊,或者给个解决方法。
解决方案四:
你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}
解决方案五:
感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?
解决方案六:
引用3楼loryrichie的回复:
你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}
感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?
解决方案七:
引用5楼eennddyy的回复:
Quote: 引用3楼loryrichie的回复:
你不应该这样去先择。最好,每个tabItem给外Name,然后用TabItemtb=MainWindow.FindName("Item1")astabitem;//MainWindow为主前窗体,Item1就是tableItem的名字,变量传入就可以了if(tb!=null)//判断是否找到,以免在未添加前就误点了{tb.Focus();}感谢您的回答,你的这种方法我试过了,只在ShowDialog的情况下好使,在Show的情况下需要点击按钮两次后主页面的tabcontrol才将Item1选中;这个知道怎么回事吗?有解决方法吗?
我遇到过这个问题,但是没有解决掉,而是在主窗口中,主窗口中有一个winform的控件,也要点两次Item1,才能控制里面的winform的控件(暂时还没有找到替代winform的控件的方法),这个问题研究一下,如果有进展我告诉你。