嘿伙计们,我有一个非常小的问题请看下面的代码
// this is main load
private void Form1_Load(object sender, EventArgs e)
{
tabAddRemoveOperator.SelectedIndex = 0;
}
//this is selected index changed event method
private void tabAddRemoveOperator_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabAddRemoveOperator.SelectedIndex == 0)
//someCode;
else if (tabAddRemoveOperator.SelectedIndex == 1)
//someCode;
}
我的问题是,我正在更改 form_load
方法上的 tab selectedindex
,所以 tab_selectedindexchanged
事件应该被触发吧?但它不是..
我用谷歌搜索了这个问题,所以我发现一个线程说直到你的控件被加载它们的事件填充不会被触发,但我认为这是不正确的,因为所有控件都被加载 n 仅在构造函数中初始化.. 所以我对这个问题感到困惑。
最佳答案
SelectedIndexChanged
事件永远不会引发,因为默认 SelectedIndex
为 0。 当您设置 SelectedIndex
在表单的 Load
事件处理程序中设置为 0,所选索引实际上并未更改为新值,因此永远不会引发该事件。
我想到了两种可能的解决方法:
您可以将
SelectedIndex == 0
的初始化代码重构为另一个方法,然后从SelectedIndexChanged
事件处理程序调用该方法以及来自表单的Load
事件处理程序。您可以在
Load
事件处理程序中将SelectedIndex
设置为 0 以外的索引,然后立即将其设置回 0。这将导致SelectedIndex
值更改两次,但会得到预期的结果。
关于c# - tabcontrol selectedindex 更改事件未被触发 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4222535/