访问激活的子窗体上的图片框,c#

时间:2011-01-01 18:14:12

标签: c# winforms

我有一个MDI应用程序,我想在我激活的子窗体上访问一个图片框。 令人惊讶的是我无法访问图片框控件。

以下是代码:

private void button5_Click(object sender, EventArgs e)
{
  // Determine the active child form.
  Form activeChild = this.ActiveMdiChild;
  PictureBox mypic = (PictureBox) activeChild...; // cannot see picturebox
}    

在childform中:

public PictureBox picbox
{
   get
   {
     return pictureBox1;
   }
   set
   {
     pictureBox1 = value;
   }
}

我的问题在哪里?

此致

2 个答案:

答案 0 :(得分:1)

activeChild指的是整个MDI孩子。

您使用的Form类型不会定义picbox - 您应该使用子表单的正确类类型,或者将引用转换为正确的类型。

此外 - 您只需要访问picbox属性(已经是正确的类型,因此无需强制转换):

private void button5_Click(object sender, EventArgs e)
{
  // Determine the active child form.
  ChildForm activeChild = this.ActiveMdiChild as ChildForm;
  if(activeChild != null)
  {
    PictureBox mypic = ((ChildFormClass)activeChild).picbox;
    ...
  }
}   

OR:

private void button5_Click(object sender, EventArgs e)
{
  // Determine the active child form.
  Form activeChild = this.ActiveMdiChild;
  PictureBox mypic = ((ChildFormClass)activeChild).picbox;
}   

答案 1 :(得分:1)

Form类没有名为“picbox”的属性。只有您自定义设计的表单。使您的代码看起来类似于:

  Form2 activeChild = this.ActiveMdiChild as Form2;
  if (activeChild != null) {
     PictureBox mypic = activeChild.picbox;
     // etc...
  }

其中“Form2”是表单类的类型名称。