2017-01-31 3 views
-2

У меня есть два Forms в моей заявке. A Form имеет следующие поля: txtPower, txtTension и txtCurrent. Я хотел бы получить доступ к значениям, заполненным этими TextBox, через другой Form. Во втором Form я создал экземпляр object первого Form (MotorForm), однако у меня нет доступа к TextBox.Доступ к компонентам другой формы

public MacroForm() 
{ 
    InitializeComponent(); 

    MotorForm motorForm = new MotorForm(); 
    motorForm.Show(); 
} 

Есть ли способ?

+0

Вы должны изменить модификаторы доступа элементов управления. Установите свойство 'Модификатор'' public' –

+0

передайте их через конструктор – apomene

+0

Возможный дубликат [Нажмите здесь] (http://stackoverflow.com/questions/20186722/pass-a-value-from-one-form-to-another), чтобы узнать больше –

ответ

0

Кажется, что ваша проблема - идеальная ситуация для использования ShowDialog для открытия вашей формы.

Для этого вам необходимо изменить свойство Modifiers свойств элементов управления, которое хотите получить на MotorForm, и установить их в Public. А также установите свойство DialogResult вашей формы где-нибудь в нужное значение. ОК. Во всяком случае, более простой способ сделать это - установить его на кнопку, которая должна закрыть форму. Предположим, что кнопки OK или CANCEL.

Тогда вы можете создать свою форму таким образом:

MotorForm motorForm = new MotorForm(); 
if(motorForm.ShowDialog() == DialogResult.OK) 
{ 
    string myValue = motorForm.txtPower.Text; //you can access your values this way 
} 
1

Пожалуйста, не подвергайте элементы управления в вашей форме. Никогда. (Если у вас есть действительно веские причины.)

Если проблема достаточно просто не использовать MVVM (или т.п.) в программе (которые вы должны рассмотреть для каждой программы, которая, но тривиальным), вы должны выставить значения экземпляров, созданных по свойствам. Подумайте

public string Power 
{ 
    get { return txtPower.Text; } 
    set 
    { 
     if(ValidatePower(value)) 
     { 
      txtPower.Text = value; 
     } 
     else 
     { 
      // throw ?? 
     } 
    } 
} 

Если мы можем сделать разумное предположение о типе значения, мы могли бы расширить это

public double Power 
{ 
    get 
    { 
     // parse the value 
     // validate the value 
     // throw if not valid ?? 
     // return the value 
    } 
    set 
    { 
     // validate the value 
     // set the value in the text box 
    } 
} 

Если вы выставили txtPower объект, вы бы сделать класс инстанцирования зависят от реализации детали экземпляра класса, который фактически равен никогда хорошая вещь.

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