wpf 窗体加载于tabControl_SelectionChanged时间触发顺序

luo7269315 2013-12-19 09:37:10
我有一个窗体 里面有一个tabControl控件。并写了tabControl_SelectionChanged事件。
代码如下:
/// <summary>
/// 选择选项卡
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public event RoutedEventHandler tabChanged;
private void tabControl1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
int tab = this.tabControl1.SelectedIndex;
TabIniti(tab);
}

}

public void TabIniti(int tab)
{
switch (tab)
{
case 0:
this.cbbm.Visibility = Visibility.Collapsed;
this.sjxx.Visibility = Visibility.Collapsed;
this.xxxx.Visibility = Visibility.Visible;
break;
case 1:
this.cbbm.Visibility = Visibility.Visible;
this.sjxx.Visibility = Visibility.Collapsed;
this.xxxx.Visibility = Visibility.Collapsed;
break;
case 2:
this.cbbm.Visibility = Visibility.Collapsed;
this.sjxx.Visibility = Visibility.Visible;
this.xxxx.Visibility = Visibility.Collapsed;
break;
}
}

问题来了,插入断点,窗体在加载的时候就会直接跳进tabControl_SelectionChanged事件,,,我现在能想到的只能是加个全局参数去判断是否第一次加载。
有没有更好的方法去判断,第一次加载窗体的时候不触发tabControl_SelectionChanged事件啊?
在线等,,,
...全文
188 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luo7269315 2013-12-20
  • 打赏
  • 举报
回复
已经得到比较好的办法

public Window2()
        {
            TabI = 0;
            InitializeComponent();
            tabControl1.SelectionChanged += firstTabControl_SelectionChanged;
            this.cbbm.Visibility = Visibility.Collapsed;
            this.sjxx.Visibility = Visibility.Collapsed;
            this.xxxx.Visibility = Visibility.Visible;
        }

private void firstTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            tabControl1.SelectionChanged -= firstTabControl_SelectionChanged;
            tabControl1.SelectedIndex = -1;
            tabControl1.SelectionChanged += tabControl1_SelectionChanged;
        }
luo7269315 2013-12-19
  • 打赏
  • 举报
回复
引用 3 楼 porenasckx 的回复:
进去了怎么了,你不是有判断么。 if (e.Source is TabControl) 这个判断不能过滤的话,在里边判断是否为null
if (e.Source != null)么??
E次奥 2013-12-19
  • 打赏
  • 举报
回复
进去了怎么了,你不是有判断么。 if (e.Source is TabControl) 这个判断不能过滤的话,在里边判断是否为null
luo7269315 2013-12-19
  • 打赏
  • 举报
回复
引用 1 楼 trc_tt 的回复:
楼主可以在页面初始化的时候,直接调用TabIniti函数,例如:TabIniti(0),默认显示tab的第一页
不是显示的问题,问题是加载的时候 读不到控件,我代码没错,运行就会报错,
trc_tt 2013-12-19
  • 打赏
  • 举报
回复
楼主可以在页面初始化的时候,直接调用TabIniti函数,例如:TabIniti(0),默认显示tab的第一页

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧