доступ к графическому блоку на активированной дочерней форме, c # - PullRequest
1 голос
/ 01 января 2011

У меня есть приложение MDI, в котором я хочу получить доступ к картинке в моей активированной дочерней форме.Удивительно, но я не могу получить доступ к элементу управления Picturebox.

Вот код:

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

В дочерней форме:

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

Где моя проблема?

С уважением,

Ответы [ 2 ]

1 голос
/ 01 января 2011

Класс Form не имеет свойства с именем "picbox". Только ваша специально разработанная форма. Сделайте ваш код похожим на это:

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

Где "Form2" - это имя типа вашего класса формы.

1 голос
/ 01 января 2011

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;
    ...
  }
}   

ИЛИ:

private void button5_Click(object sender, EventArgs e)
{
  // Determine the active child form.
  Form activeChild = this.ActiveMdiChild;
  PictureBox mypic = ((ChildFormClass)activeChild).picbox;
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...