首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

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

2013-12-20 
wpf 窗体加载于tabControl_SelectionChanged时间触发顺序我有一个窗体 里面有一个tabControl控件。并写了ta

wpf 窗体加载于tabControl_SelectionChanged时间触发顺序
我有一个窗体 里面有一个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事件啊?
在线等,,,
[解决办法]
正常情况下,InitializeComponent();必须放在最开始,它是负责初始化界面控件的,你2楼的代码就是因为在InitializeComponent()之前对界面控件进行操作,所以才出错。

(把你在XAML中的对TabControl的SelectionChanged事件的代码先删除)
程序开始:
InitializeComponent();
tabControl.SelectionChanged += firstTabControl_SelectionChanged;

        private void firstTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {


            tabControl.SelectionChanged -= firstTabControl_SelectionChanged;
            tabControl.SelectedIndex = -1;
            tabControl.SelectionChanged += tabControl_SelectionChanged;
        }

        private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //你本来的代码......
        }

热点排行