Как получить доступ и изменить значение элемента управления родительского окна из дочернего окна в C # - PullRequest
0 голосов
/ 12 ноября 2010

Привет, как я могу изменить текстовое значение текстового поля в родительском окне из дочернего окна ..

т.е. у меня есть родительское окно с textbox1 и кнопкой, а дочернее окно имеет textbox2 и кнопку.Мне нужно обновить значение textbox1 при вводе текста в текстовое поле дочернего окна.

Я сделал несколько простых функций, чтобы сделать это логически правильно, но это не работает. Я понятия не имею, почему ..

parent.cs

namespace digdog
{
    public partial class parent : Form
    {
        public parent()
        {
            InitializeComponent();
        }

        public void changeText(string text)
        {
            textbox1.Text = text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Display modal dialog
            child myform = new child();
            myform.ShowDialog();

        }

    }
}

child.cs

namespace digdog
{
    public partial class child : Form
    {

        public child()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
         parent mytexts = new parent();
         mytexts.changeText(textbox2.Text);
        }
    }
}

любые идеи будут оценены заранее, спасибо

Ответы [ 3 ]

3 голосов
/ 12 ноября 2010

Не создавайте нового родителя. Ссылка на родителя самой формы.

    private void button1_Click(object sender, EventArgs e)
    {
        parent mytexts = this.Parent as parent;
        mytexts.changeText(textbox2.Text);
    }

И вот как вы впервые создаете ребенка:

    private void button1_Click(object sender, EventArgs e)
    {
        //Display modal dialog
        child myform = new child();
        myform.ShowDialog(this);  // make this form the parent
    }
3 голосов
/ 31 января 2014

или просто: в ParentWindow

ChildWindow child = new ChildWindow(); 
child.Owner = this;
child.ShowDialog();

в дочернем окне

this.Owner.Title = "Change";

это работает довольно круто

3 голосов
/ 12 ноября 2010

Вы создаете другое «родительское» окно (которое не видно) и изменяете его текст. «Настоящий» родитель должен быть доступен ребенку. Вы можете сделать это с помощью свойства дочернего элемента, установленного в родительской кнопке button1_click.

, например

в детском классе

public parent ParentWindow {get;set;}

в родительском button1_click

child myform = new child();
child.ParentWindow = this;
m.ShowDialog();

в дочернем button1_click

ParentWindow.changeText(textbox2.Text)
...