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

リスト内のコントロールの1つのクリックイベントを処理したい_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 に答える