2011-01-03 6 views
3

Я хочу изменить текст в текстовом поле на parentform из childform. Я установил текстовое полеДоступ к элементам управления на parentform из дочерней формы

модификаторов = общественного я написал дополнительную функцию в parentform

public TextBox txtbox 
{ 
    get 
    { 
    return mybox; 
    } 
    set 
    { 
    mybox= value; 
    } 
} 

в форме ребенка писать this.ParentForm. (не видно mybox). что мне не хватает. С уважением,

+1

Просто примечание, но это выглядит как дизайн, который гаснул неправильно. Детской форме не нужно обращаться к родительским элементам управления. –

+1

Как Хенк упомянул его не практичный дизайн. попробуйте вместо этого использовать «событие». – honibis

+0

Детский вид означает, что родительская форма содержит в себе другую форму? или вы говорите о наследовании? – Mohanavel

ответ

4

С ParentForm будет возвращать Form и не вашей формы, вы должны бросить его, прежде чем вы можете получить доступ к любому из ваших пользовательских свойств:

((MyForm)this.ParentForm).textbox = "new text!"; 

Кроме того, вы устанавливаете все контроль, а не только текст.

Попробуйте это, чтобы выставить только свойства текста:

public string txtbox 
{ 
    get 
    { 
    return mybox.Text; 
    } 
    set 
    { 
    mybox.Text = value; 
    } 
} 
3

Я думаю, что проблема в том, что ParentForm имеет тип формы, которая не имеет txtbox члена. Вы должны бросить ParentForm в форму (предположим, это Form1), как:

((Form1)this.ParentForm).txtbox 
0

Random догадка, не видя никакого реального кода: mybox, скорее всего, не объявлена ​​достоянием общественности.

Редактировать: Или, ах, да, как говорит Андрей, вы не кладете ParentForm в тип родительской формы.

Смежные вопросы