【问题标题】:C# Event of Control from List<Control>来自 List<Control> 的 C# 控制事件
【发布时间】:2012-07-11 20:02:36
【问题描述】:

这是我的代码:

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中的一个控件的点击事件。

这可能吗?

【问题讨论】:

    标签: c# list events controls


    【解决方案1】:

    为什么不直接使用 Control.MouseClick 那个 TabPage 从它的父类获得。

    【讨论】:

    • t.Click += new System.EventHandler(TabPageClicked);一样处理鼠标点击TabPage
    【解决方案2】:

    您可以在创建 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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多