winforms 如何在winform中检查哪个面板被点击了?

jpfvwuh4  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(152)

我的winform中有两个面板。panel 1是蓝色的,panel 2是红色的。我想知道是否有一个函数可以告诉我点击了哪个面板,否则就使用私有的void panel1_Click(object sender,EventArgs{}函数。谢谢,下面是我的代码:

private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            Control control = this.GetChildAtPoint(e.Location);
            if (control is Panel)
            {
                Panel clickedPanel = (Panel)control;
                if (clickedPanel.Name.Equals("panel1"))
                {
                    MessageBox.Show("you clicked on blue panel");
                }
                else
                {
                    MessageBox.Show("you clicked on red panel");
                }
            }
        }

这个功能不起作用,我不知道该怎么办.
我尝试了许多功能,但我不能搜索任何“通用”功能,这告诉我点击了什么对象。

kupeojn6

kupeojn61#

您已为窗体单击事件处理程序附加了一个函数,该函数将处理窗体上的鼠标单击事件,而不是面板上的事件。如果可以在设计器上查看面板,则可以双击每个面板,IDE将自动生成处理每个面板的鼠标单击事件的方法,或者可以在窗体的构造函数中为每个面板添加事件处理程序,如下所示

public class MyForm: Form{

public MyForm(){
     InitializeComponent();
     //register the event listeners for the panels
     panel1.MouseClick += panel1_Clicked;
     panel2.MouseClick += panel2_Clicked;
  }
  //implement the methods
   private void panel1_Clicked(object sender, MouseEventArgs e){
      //handle the click for panel1
   }
   private void panel2_Clicked(object sender, 
 MouseEventArgs e){
      //handle the click for panel2
   } 
}

相关问题