c# - tabcontrol selectedindex 更改事件未被触发 C#

标签 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;
}

我的问题是,我正在更改 form_load 方法上的 tab selectedindex,所以 tab_selectedindexchanged 事件应该被触发吧?但它不是..

我用谷歌搜索了这个问题,所以我发现一个线程说直到你的控件被加载它们的事件填充不会被触发,但我认为这是不正确的,因为所有控件都被加载 n 仅在构造函数中初始化.. 所以我对这个问题感到困惑。

最佳答案

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

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

  1. 您可以将 SelectedIndex == 0 的初始化代码重构为另一个方法,然后从 SelectedIndexChanged 事件处理程序调用该方法以及来自表单的 Load 事件处理程序。

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

关于c# - tabcontrol selectedindex 更改事件未被触发 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4222535/

相关文章:

c# - 如何在 C# 中每四个单词拆分一个字符串?

c# - 如何在 Visual Studio 中查找 MVC Controller 方法的引用

c#读取xml文件

c# - 我怎么知道是否因为外键违规而引发了 SQLexception?

c# - X509Chain 的处置

c# - 动态创建控件的事件处理程序

c# - 在运行时解析成员名称

c# - C# 中的 CLOCKS_PER_SEC 等价物

c# - 时间跨度? = DateTime?.Value - DateTime?.Value 结果为空

c# - 使用带有异常的字典<TKey, TValue>