2012-02-09 2 views
0

Как мы можем передавать данные из одной формы в другую открытую форму в winform?Как мы можем передавать данные из одной открытой формы в другую?

В приложении Windows одна форма открывает другую форму. Когда я ввожу некоторые данные в родительскую форму, это будет отражено в другой дочерней форме немедленно.

Как это произойдет?

ответ

1

Зависит от того, что вы хотите получить.

Простой подход - это просто вызвать методы напрямую.

Родитель

_child = new ChildForm(); 

тогда, когда вы обнаружили обновления (TextChanged, SelectedIndexChanged и т.д.)

_child.UpdateData(someDataCollectedFromParent) 

Детские

public void UpdateData(MyObject data) 
{ 
    textBox1.Text = data.FirstName; 
    textBox2.Text = data.SecondName; 
} 

Кроме этого, вам CoU ld создайте свой механизм передачи сообщений или загляните в инфраструктуру DataBinding.

0

Вы также можете использовать System.ComponentModel.INotifyPropertyChanged для MyObject.

public class MyObject : INotifyPropertyChanged 
{ 
    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 
    private object _data1; 

    public object Data1 
    { 
     get{ return _data1;} 
     set 
     { 
      _data1=value; 
      PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Data1")); 
     } 
    } 
} 

то в вашей форме ребенка, назначить функцию, чтобы получить это событие на счет обновления новых данных (ов), а следующий код демонстрирует:

myObject1.PropertyChanged += new PropertyChangedEventHandler(m_PropertyChanged); 

и m_PropertyChanged:

public void m_PropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
    // update your data here, you can cast sender to MyObject in order to access it 
} 

С уважением, S. Peyman Mortazavi

+0

Это было бы что-то, что я бы использовал для hav e ребенок отправляет информацию родителям, но не наоборот. Ребенок должен иметь ссылку на родителя, чтобы подписаться на его событие в этом примере. – Servy

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