c# TabControl TabPage传递事件

本文关键字:事件 TabPage TabControl | 更新日期: 2023-09-27 18:18:39

我正在使用TabControl并将TabPages附加到TabControl,但是我遇到了一个问题,使TabPages响应一个事件。这让我觉得我遗漏了一些关于这些类之间关系的东西,所以我希望得到一些帮助。我想给TabControl添加一些TabPage对象,对于其中的一个(添加的第一个),我想给它发送一个事件让它做一些事情。

下面是基本代码:
/* tabControl is a TabControl object, and 
tabNames is a string array */
bool first = true;
foreach (string tabName in tabNames)
{
    TabPage tabPage = CreateTabPage(tabName);
    tabControl.Controls.Add(tabPage);
    if (first)
    {
        methodTabPage.Select();
        first = false;
    }
}
private TabPage CreateTabPage(String name)
{
    TabPage tabPage = new TabPage(name);
    tabPage.Enter += new EventHandler(MethodTab_Entered);
    return tabPage;
}
private void MethodTab_Entered(object sender, EventArgs e)
{
    DoSomething();
}

当我运行这段代码时,据我所知,DoSomething()从未被调用。我已经尝试了各种各样的事情,比如Click事件等等,但无法像预期的那样工作。我错过了什么?

谢谢,马丁

c# TabControl TabPage传递事件

这里可以正常工作:

public partial class TabPageForm : Form
{
    private List<string> tabNames;
    public TabPageForm()
    {
        InitializeComponent();
        tabNames = new List<string>();
        tabNames.Add("NewTab");
    }
    private void button1_Click(object sender, EventArgs e)
    {
        bool first = true;
        foreach (string tabName in tabNames)
        {
            TabPage tabPage = CreateTabPage(tabName);
            methodTabPage.Controls.Add(tabPage);
            if (first)
            {
                methodTabPage.Select();
                first = false;
            }
        }
    }
    private TabPage CreateTabPage(String name)
    {
        TabPage tabPage = new TabPage(name);
        tabPage.Enter += new EventHandler(MethodTab_Entered);
        return tabPage;
    }
    private void MethodTab_Entered(object sender, EventArgs e)
    {
        DoSomething();
    }
    private void DoSomething()
    {
        throw new NotImplementedException();
    }
}

DoSomething在我进入新创建的选项卡时被调用。

当然,first变量的逻辑可能不像你想的那样,所以如果你能澄清它的语义,我可以更新我的代码片段。

欢呼