将鼠标单击事件处理程序添加到PictureBox

我有一个picturebox控件,点击它后,另一个PictureBox出现在一个特定的位置。 它不是从工具箱中添加的。

PictureBox picOneFaceUpA = new PictureBox(); picOneFaceUpA.Location = new Point(42, 202); picOneFaceUpA.Width = 90; picOneFaceUpA.Height = 120; picOneFaceUpA.Image = Image.FromFile("../../Resources/" + picFaceUpToBeMoved[0] + ".png"); Controls.Add(picOneFaceUpA); picOneFaceUpA.BringToFront(); 

如何将MouseClick事件处理程序添加到此控件?

谢谢

只需使用+=运算符添加事件处理程序:

 picOneFaceUpA.MouseClick += new MouseEventHandler(your_event_handler); 

要么:

 picOneFaceUpA.MouseClick += new MouseEventHandler((o, a) => code here); 

如果你输入picOneFaceUpA.Click +=然后点击tab,它将自动完成并实现事件处理程序:

  private void button2_Click(object sender, EventArgs e) { PictureBox picOneFaceUpA= new PictureBox(); picOneFaceUpA.Click += new EventHandler(picOneFaceUpA_Click); } void picOneFaceUpA_Click(object sender, EventArgs e) { throw new NotImplementedException(); } 

在WinForms中订阅事件的最佳方式 – 在设计器中选择您的控件,转到“属性”窗口并选择“事件”选项卡。 然后选择您想要的任何事件(单击,鼠标点击等),然后双击事件名称右侧的空格。 将生成事件处理程序并订阅事件。


如果要手动订阅事件,则将事件处理程序添加到事件

 picOneFaceUpA.MouseClick += PicOneFaceUpA_MouseClick; 

在写+=之后按Tab将生成处理程序。 或者您可以手动编写它:

 void PicOneFaceUpA_MouseClick(object sender, MouseEventArgs e) { // handle click event if (e.Button == MouseButtons.Left) MessageBox.Show("Left button clicked"); } 

顺便说一句,如果您不需要有关点击事件的其他信息(例如,单击了哪个按钮),则使用Click事件。 它默认处理左键单击:

 picOneFaceUpA.Click += PicOneFaceUpA_Click; 

和处理程序:

 void PicOneFaceUpA_Click(object sender, EventArgs e) { // show another picture box } 

看来你知道如何添加动态控件然后你应该这样做

 this.picOneFaceUpA.MouseClick += new MouseEventHandler(yourMethodName); //hook 

并删除一个事件

 this.picOneFaceUpA.MouseClick -= yourMethodName; //unhook 

该方法应声明如下:

 private void yourMethodName(object sender, MouseEventArgs e) { //your code here }