tabcontrol selectedindex改变了事件没有被解雇C#

Fos*_*erZ 2 c#

嘿伙计们,我的问题非常小,请看下面的代码

// 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只在构造函数初始化..所以我对这个问题感到困惑.

Cod*_*ray 5

SelectedIndexChanged永远不会引发该事件,因为默认 SelectedIndex值为0.当您SelectedIndex在窗体的Load事件处理程序中将值设置为0时,所选索引实际上不会更改为新值,因此永远不会引发该事件.

可以想到两种可能的解决方法:

  1. 您可以重构初始化代码以适用SelectedIndex == 0于另一个方法的情况,然后从SelectedIndexChanged事件处理程序和表单的Load事件处理程序中调用该方法.

  2. 您可以SelectedIndexLoad事件处理程序中将其设置为0 以外的索引,然后立即将其设置为0.这将导致SelectedIndex值更改两次,但将具有预期结果.