0

В UserControl есть Textbox,в нём есть текст. Этот текст нужно передать в другой TextBox в новой форме

Из другого класса пытаюсь показать текст из TextBox'a ( который находится в UserControl )

В UserControl в поле TextBox'a выставил Public доступ ( чтобы можно было из формы достучаться до TextBox'a )

MyUserControl PC = new MyUserControl();
TextBox.Text = PC.NameTextBox.Text);

Но текст не показывается.

Как вывести текст из UserControl в TextBox другой формы?

ZidoX
  • 660
  • А как UserControl добавляется на форму (или где он отображается)? – default locale Jan 09 '18 at 11:12
  • Прочитай тут https://ru.stackoverflow.com/questions/98422/%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D0%BC%D0%B8 – Roman Ieromenko Jan 09 '18 at 11:13
  • @defaultlocale, MyUserControl PC = new MyUserControl(); и с него читаю данные: PC.NameTextBox.Text – ZidoX Jan 09 '18 at 11:15
  • @Дмитрий Так он создается. А где он отображается? Если добавили его на форму в дизайнере, то поищите в свойствах имя (Name) компонента. – default locale Jan 09 '18 at 11:17
  • 1
    Идея правильная, хотя обычно вместо прямого доступа к элементам делают проброс свойства public string Text { get { return textBox1.Text; } }. Видимо где-то ошиблись с реализацией и на момент обращения текст пустой: к примеру код выполняется до заполнения поля текстом в контроле. – Alex Krass Jan 09 '18 at 12:12
  • 1
    @AlexKrass, Получить текст получилось, спс. – ZidoX Jan 09 '18 at 13:19
  • 3
    @Дмитрий правильнее всего использовать для подобного вазимодействия шареный контекст - модельный класс, который создаётся один раз и передаётся в конструктор каждой формы, через него и организуется обмен данными. В WinForms наибольшее распространение получил паттер MVC. В WPF - MVVM(C) – Lunar Whisper Jan 09 '18 at 14:37

2 Answers2

0

Ответ дан здесь, на примере передачи значения TrackBar в реальном времени.

Digital Core
  • 1,654
  • на ответ не тянет. это либо комментарий к вопросу, либо предложение закрыть данный вопрос как дубликат указанного. за что голосовать? за дубликат или за преобразование в комментарий? – aleksandr barakin Mar 08 '20 at 17:24
0

Ну как вариант можно извращатся и сделать так

private void Form2_Load(object sender, EventArgs e)
        {
            var T = Form.ActiveForm.Controls.OfType<Panel>().FirstOrDefault(g => g.Name == "panel1").Controls.OfType<UserControl1>().FirstOrDefault();
            var y = T.Controls.OfType<Label>().FirstOrDefault().Text;
            MessageBox.Show(y);
        }

При загрузке формы 2 берем текст Label из UserControl c Form1

Саске
  • 1,326
  • 13
  • 23