【问题标题】:How to receive event on Panel Controls?如何在面板控件上接收事件?
【发布时间】:2011-01-18 13:35:21
【问题描述】:

我有表单,它有 1 个面板,面板有 0-N 个图片框 - 动态添加到面板中,但是如果我将鼠标悬停在图片框上并单击它,它不会触发任何操作。我的意思是当我点击 Panel 时,它会触发 click 方法,但是我如何确保那些 PictureBox 的行为也相同呢?

【问题讨论】:

    标签: c# events


    【解决方案1】:

    由于图片框是动态添加的,因此您需要在代码中为点击事件附加事件处理程序。

    在将它添加到控件集合之前执行类似的操作..

     PictureBox pbx = new PictureBox();
     pbx.Click += new EventHandler(pbx_Click);
     //Now assign other properties and then add it to control collection
     //panel1.Controls.Add(pbx);
    
    
    
    private void pbx_Click(object sender, EventArgs e)
    {
         //handle the click event here
    }
    

    【讨论】:

    • 你的意思是:pbx.Click += new EventHandler(pbx_Click);
    【解决方案2】:

    如果你的PictureBoxes是动态添加到Panel中的,那么PictureBox的Click事件也一定要加上。

    请注意,您可以在同一个处理程序中处理所有 PictureBoxes Click 事件:

    for (int i = 0; i < 10; i++)
                {
                    PictureBox pb = new PictureBox();
                    pb.Name = "pb" + i;
                    pb.Click +=new EventHandler(pb_Click);
                    this.Controls.Add(pb);
                } 
    
    void pb_Click(object sender, EventArgs e)
            {
    
                PictureBox pb = (PictureBox) sender;
                if (pb.Name == "pb1")
                {
                    ...
                }
            }
    

    你懂的……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多