Как обновить текст метки в форме с помощью usercontrol? - PullRequest
0 голосов
/ 26 сентября 2019

Я помещаю кнопку внутри UserControl и помещаю этот UserControl в форму.Я хочу, чтобы текст текстового поля в форме обновлялся при нажатии кнопки.

public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 form1 = new Form1();
            form1.textBox1.Text = "1";

            //The textbox text is not updated!
        }
    }

Текст текстового поля не обновляется

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Вы создаете новый Form1.Вы не показываете это.Вы, вероятно, хотели обновить существующий Form1.Я полагаю, что UserControl1 находится на Form1.Тогда вы можете сделать это:

private void button1_Click(object sender, EventArgs e)
{
    // Get the parent form
    Form1 myForm = (Form1) this.parent;
    myForm.TextBox1.Text = "1";
}

Если ваш UserControl1 не включен Form1, то вам нужно как-то передать ссылку.

0 голосов
/ 26 сентября 2019

Не создавайте новую форму.Удалите эту строку.

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

Если это так, зарегистрируйте EventHandler.из вашей формы и инициируйте событие из вашей кнопки в UserControl.

Зарегистрируйте EventHandler в вашем UserControl:

public event EventHandler ButtonClicked;
protected virtual void OnButtonClicked(EventArgs e)
{
    var handler = ButtonClicked;
    if (handler != null)
        handler(this, e);
}
private void Button_Click(object sender, EventArgs e)
{        
    OnButtonClicked(e);
}

В своей форме вы подписываете событие из UserControl:

this.userControl1.ButtonClicked += userControl11_ButtonClicked;

private void userControl11_ButtonClicked(object sender, EventArgs e)
{
    this.TextBox1.Text = "1";
}

Дайте мне знать ваш результат.

0 голосов
/ 26 сентября 2019

удалить строку, в которой вы создаете новую форму

 public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                textBox1.Text = "1";

                //The textbox text is not updated!
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...