2

アプリケーションで分割コンテナを使用しています。1 つの親分割コンテナー。親分割コンテナの panel2 には 3 つの分割コンテナがあります。

親コンテナーの panel2 に埋め込まれた分割コンテナーのパネルの 1 つをクリックすると、どのコンテナーがクリックされたかを見つける方法を教えてください。

前もって感謝します!

4

2 に答える 2

2

すべてのパネルをサブスクライブして、同じクリック イベントを使用することができます。送信者は SplitContainer となる Parent プロパティ (IDE からは隠されていますが、そこにあります) を持つ SplitterPanel クラスになります。

public Form1() {
  InitializeComponent();

  splitContainer1.Panel1.MouseClick += Panel_MouseClick;
  splitContainer1.Panel2.MouseClick += Panel_MouseClick;
  splitContainer2.Panel1.MouseClick += Panel_MouseClick;
  splitContainer2.Panel2.MouseClick += Panel_MouseClick;
  splitContainer3.Panel1.MouseClick += Panel_MouseClick;
  splitContainer3.Panel2.MouseClick += Panel_MouseClick;
  splitContainer4.Panel1.MouseClick += Panel_MouseClick;
  splitContainer4.Panel2.MouseClick += Panel_MouseClick;
}

void Panel_MouseClick(object sender, MouseEventArgs e) {
  SplitterPanel sp = sender as SplitterPanel;
  SplitContainer sc = sp.Parent as SplitContainer;
  MessageBox.Show(sc.Name + " - " + sp.Tag.ToString());
}

SplitContainer で使用されるサブパネルは Name プロパティを使用しないため、デモンストレーションの目的で、各パネルのタグ プロパティに 1 または 2 を入力しました。

于 2012-08-30T16:03:22.360 に答える
0

イベントハンドラのsenderプロパティは、クリックされたパネルです。

private void button1_Click(object sender, System.EventArgs e){
    //sender is the panel which has just been clicked, cast it.
}
于 2012-08-30T15:55:53.033 に答える