首先申明:这篇post不算复杂的东东,纯粹好久没写了,凑个数 注意TabControl.SelectTab方法

话说上周末的时候,要给项目中添加一个小小的功能,本来还以为顶多半小时就能搞定的,结果折腾了一小时多还不甚其解,直到刚才Reflector一下才算明白,sigh~

起因是这样的,UI上有个TabControl,盛放好几个TagPage作为容器,TabPage里装载DataGridView显示数据之用,窗体加载时异步读取数据,数据读取完毕分组后加载到各自grid中;因为是TabPage的关系,不想用户还没选择该Tab就加载其grid,所以绑定了TabControl的Selected事件,触发之后才根据当前的Tab加载其grid,减少内存消耗注意TabControl.SelectTab方法

然而等到测试时才发现,虽然数据已经正确读取并且分组了,TabControl的Selected事件却死活不会触发,非得手动点击第n个Tab之后(n>1)才行(我在异步线程里调用了TabControl的SelectTab方法),刚开始一直以为是异步的原因(当时也没经过脑子好好考虑)因为急着下班,所以搁到今天才算解决注意TabControl.SelectTab方法

新建了一个测试项目,界面上拽了个TabControl,默认有2个Tab,另外还拽了个button,button的click事件里头加了行
注意TabControl.SelectTab方法this.tabControl1.SelectTab(this.tabPage1);


让人见鬼的是同样不会触发TabControl的Selected事件,为什么?只好打开Reflector看个究竟:
1.TabControl.SelectTab()

注意TabControl.SelectTab方法public void SelectTab(TabPage tabPage)
}

再看看this.SelectTab(index)是咋回事://注意看set块
注意TabControl.SelectTab方法public void SelectTab(int index)
}

继续://注意看set块
注意TabControl.SelectTab方法[SRCategory("CatAppearance"), SRDescription("TabControlSelectedTabDescr"), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false)]
注意TabControl.SelectTab方法
public TabPage SelectedTab
}

继续: //注意看set块
注意TabControl.SelectTab方法internal TabPage SelectedTabInternal
}

再继续:
}


里面有个if判断: if(this.SelectedIndex != value)...

OMG, 白忙活一场 :) 另外,直接调用SelectedTab属性是不是更轻松呢?注意TabControl.SelectTab方法
ps. xm中山路今儿个下午的创意市集ms不咋样,白跑一趟,热得够呛...

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-20
  • 2021-11-07
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-26
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2021-08-29
  • 2022-01-17
  • 2021-09-19
相关资源
相似解决方案