嘿伙计们,我的问题非常小,请看下面的代码
// 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;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我正在改变tab selectedindexon form_load方法,所以tab_selectedindexchangedEvent应该被解雇了吗?但它不是..
我已经搜索了这个问题,所以我发现一个线程说,直到你的控件加载他们的事件填充没有被解雇,但我不认为这是正确的,因为所有控件都被加载n只在构造函数初始化..所以我对这个问题感到困惑.
SelectedIndexChanged永远不会引发该事件,因为默认 SelectedIndex值为0.当您SelectedIndex在窗体的Load事件处理程序中将值设置为0时,所选索引实际上不会更改为新值,因此永远不会引发该事件.
可以想到两种可能的解决方法:
您可以重构初始化代码以适用SelectedIndex == 0于另一个方法的情况,然后从SelectedIndexChanged事件处理程序和表单的Load事件处理程序中调用该方法.
您可以SelectedIndex在Load事件处理程序中将其设置为0 以外的索引,然后立即将其设置为0.这将导致SelectedIndex值更改两次,但将具有预期结果.