0

这是我的代码:

List<TabPage> _tpList = new List<TabPage>();
int _iTabCount = 0;

    TabPage CreateNewTab(string sTitle)
    {
        TabPage t = new TabPage();
        t.BackColor = Color.White;
        t.Text = sTitle;
        _tpList.Add(t);
        this.Tab.Controls.Add(_tpList[_iTabCount]);
        _iTabCount++;
        return _tpList[_iTabCount - 1];
    }

我想处理 List 中的 Control 之一的 Click 事件_tpList

这可能吗?

4

2 回答 2

1

为什么不只使用从其父类获取的Control.MouseClick TabPage

于 2012-07-11T20:08:22.327 回答
0

您可以在创建 tabPage 之后添加事件处理程序

TabPage t = new TabPage(); 
t.Click += new System.EventHandler(this.tabPage1_Click);
.....
this.Tab.Controls.Add(_tpList[_iTabCount]);    
.....

并添加如下代码:

    private void tabPage1_Click(object sender, EventArgs e)
    {
        TabPage t = sender as TabPage;
        if(t.Text == "MyPage")
           ......
    }

最终,您可以使用 TabPage 的 Tag 属性或 Name 属性为页面设置唯一标识符,这样您就可以更好地检查 tabPage1_Click 以发现实际点击的页面。

但是,我想指出,了解选项卡控件上哪个选项卡页处于活动状态的最佳方法是处理选项卡控件本身上的 Selected 事件。该事件有一个 TabControlEventArgs 包含当前选定的标签页。

    private void tabControl1_Selected(object sender, TabControlEventArgs e)
    {
        Console.WriteLine(e.TabPage.Text);
    }
于 2012-07-11T20:10:37.110 回答