来自List <control> </control>的C#控制事件

时间:2012-07-11 20:02:37

标签: c# list events controls

这是我的代码:

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];
    }

我想处理列表中的控件_tpList之一的点击事件。

这可能吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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以发现点击的实际页面。

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

    private void tabControl1_Selected(object sender, TabControlEventArgs e)
    {
        Console.WriteLine(e.TabPage.Text);
    }