2

こんにちは、C# で Windows フォーム アプリケーションを開発しています。

FlowLayoutPanel があり、その中にパネルの動的リストがあります。FlowLayoutPanel 内のパネルにマウス クリック イベントを追加するにはどうすればよいですか?


これはThxですが、イベント関数ではなく、void関数を呼び出すことはできますか?次のようなもの:

private void example(String x)
    {
        label2.Text = x;
    }
4

3 に答える 3

8

次のようなことができます。

private void attachClickEventHandler()
{
  for (int i = 0; i < 10; i++)
  {
     Panel p = new Panel();
     p.Click+=p_Click;
     flowLayoutPanel1.Controls.Add(p);
  }

// OR

  foreach(Control c in flowLayoutPanel1.Controls)
     if(c is Panel)
        c.Click += p_Click;
}

void p_Click(object sender, EventArgs e)
{
   // do click stuff
}
于 2013-06-11T15:09:19.453 に答える
2

void 関数を呼び出して、パネル情報に関連付けられているものを渡したい場合は、この情報をパネルの Tag プロパティに追加し、次のようにハンドラー関数から呼び出すことができます。

void AttachHandlers()
{
    Panel panel1 = new Panel();
    panel1.Tag = "this is first panel";
    panel1.Click += new EventHandler(panel1_Click);
    flowLayoutPanel1.Controls.Add(panel1);
}

void func_2(string str)
{
    label1.Text = str;
}

void panel1_Click(object sender, EventArgs e)
{
    func_2(sender.Tag.ToString());
}
于 2013-06-11T15:35:07.937 に答える
1

パネルを作成するたびに、.MouseClick イベントで mouseclick を割り当てます。

myPanel.MouseClick += myMouseClickEventFunction;
于 2013-06-11T15:07:17.380 に答える