如何从PictureBox获取用户控件

时间:2018-04-13 15:02:49

标签: c# user-controls

我的用户控件上有一个PictureBox,我在表单上添加了很多用户控件。每当用户点击PictureBox时,他应该获得该PictureBox所属的User Control项目。

因此,在我的用户控件上,我添加了此代码

  public usercontrol1()
   {
      InitializeComponent();
      pictureBox1.Parent = this;
   }

然后在我的表单

  private void form1_Load(object sender, EventArgs e)
   {
       var c = new usercontrol1();
       c.pictureBox1.Click += item_click;
       c = new usercontrol1();
       c.pictureBox1.Click += item_click;
   }

   private void item_click(object sender, EventArgs e)
   {
       usercontrol1 abc = pictureBox1.Parent; // Giving Error
   }

我尝试了这种方法将用户控件设置为picturebox的父控件,并尝试从窗体上的picturebox click事件中检索它。但导致失败。如何从PictureBox单击事件中获取usercontrol1对象?

1 个答案:

答案 0 :(得分:0)

我确定错误消息(您忘了告诉我们)非常清楚地告诉您错误:pictureBox1.Parent类型为Control,因此无法直接分配给{{1}类型的变量1}}。

您必须强制它到usercontrol1

usercontrol1

请注意,如果出于任何原因usercontrol1 abc = (usercontrol1)pictureBox1.Parent; InvalidCastException而不是Parent,则会引发Control。因此,您最好使用usercontrol1运算符:

as

或使用C#7中的增强(模式匹配)private void item_click(object sender, EventArgs e) { usercontrol1 abc = pictureBox1.Parent as usercontrol1; if (abc == null) return; // as returns null if the cast fails // do something with abc } 运算符:

is