选项卡页单击事件

17

我想根据所选的选项卡页面自动触发事件。

在我的表单的设计模式中,当我单击选项卡时,属性框会显示 Tabs System.Windows.Forms.TabControl,而无论选择哪个标签。然而,我必须点击实际的页面而不是标签,才能使属性更改为页面名称,例如 TaskListPage System.Windows.Forms.TabPage。

我的选项卡控件名为Tabs,我试图使用下面的代码进行测试,它应该根据选项卡选项显示消息。

 private void Tabs_SelectedIndexChanged(object sender, EventArgs e)

        {
            if (Tabs.SelectedTab == TaskListPage)
            {
                MessageBox.Show("TASK LIST PAGE");
            }
            else if (Tabs.SelectedTab == SchedulePage)
            {
                MessageBox.Show("SCHEDULE PAGE");
            }
        }

当我测试上面的代码时,什么都没有发生。

希望能得到帮助,在特定标签被点击时使事件起作用将不胜感激!

谢谢

3个回答

23

听起来你没有连接好:

public Form1() {
  InitializeComponent();    
  Tabs.SelectedIndexChanged += new EventHandler(Tabs_SelectedIndexChanged);
}

还有其他事件也可以提供这些信息:SelectedSelecting

void Tabs_Selected(object sender, TabControlEventArgs e) {
  if (e.TabPage == TaskListPage) {
    // etc
  }
}

我会在这里添加解决与我遇到的相同问题的人的解决方案。事件直到构造函数运行后才被触发。即使像Lars建议的手动添加处理程序也不起作用。在窗体的Load事件处理程序中添加触发事件的代码。 - ensignr

1

这部分内容放在

    public Form1()
    {
// This is near the top of the form 1 code in form1.cs

        InitializeComponent();
        tabControl1.SelectedIndexChanged += new EventHandler(TabControl1_SelectedIndexChanged);
    }

然后,在您的常规代码中,您只需告诉哪个控件应该在单击选项卡页后具有焦点。在我的文字处理器中,我使用了一个富文本框和选项卡控件来模拟msword功能区。在我的情况下,富文本控件不在选项卡页上,因为我的选项卡页仅覆盖表单顶部的1或2英寸。

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {

        richTextBox1.Focus();
    }

这是我称之为文字处理器的东西。它可以供任何想使用它的人使用。Larry's Journal


0
private void tabControl1_Click(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab.Text =="All")
    {
        MessageBox.Show("All");
    }
    else
    {
        MessageBox.Show("hello world");
    }
}

试一下,应该可以工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接