2012-03-21 4 views
0

У меня есть приложение Windows.Сохранение данных в родительском окне из окна ребенка?

Приложение Windows имеет нашу библиотеку XML на нем.

public NetspotXMLLibV1 XMLLib; 

    public Form1() 
    { 
     InitializeComponent(); 
     XMLLib = new XmlLibrary.NetspotXMLLibV1(); 
    } 

У этого также есть пользовательский контроль.

Этот пользовательский элемент управления имеет кнопку на нем, что имеет

SelectWidgitWindow widgit = new SelectWidgitWindow(); 
widgit.ShowDialog(); 

при нажатии на кнопку, она открывает новое окно. Я делаю некоторые вещи в этом новом окне. Когда я нажимаю кнопку в новом окне, я хочу сохранить материал в окне Form1

Как получить доступ к этому в новом окне (SelectWidgitWindow)?

Т.е

form1.XMLLib.Add(ItemForProcessing); 

или

Windows(1).XMLLib.Add(ItemForProcessing); 

Пожалуйста, помогите

ответ

0

Используйте ShowDialog overload, к которому вы можете передать владельцу по новой форме:

Form2 f = new Form2(); 
f.ShowDialog(this.Parent); 

и в Form2:

((Form1)Owner).MyProperty = 11; 
+0

f.ShowDialog (this) = это будет равно usercontrol, а не родительской форме –

+0

В UserControl вы можете использовать свойство Parent для доступа к форме, в которой находится элемент управления (вы можете пройти через родителям, пока не найдете форму для поддержки вложенных элементов управления). См. Править. – Strillo

+0

cool done using var parent = (Form1) this.Parent; widgit.XMLLib = parent.XMLLib; –

0

Пара способов:

1) Вынести элементы, которые вы хотите родительская форма для извлечения как свойства ребенок форма. В коде родительской формы, когда возвращается ShowDialog, вы можете получить значения, которые вы хотите сохранить из свойств.

2) Передайте ссылку на родительскую форму в форму (возможно, когда она построена). Тогда дочерняя форма может вызвать некоторый метод или установить некоторые свойства в родительской форме. Обратите внимание, что это не предпочтителен, поскольку он связывает ребенка с родительской формой, то есть его нельзя вызывать из любой другой формы.

+0

для 1, позволяет сказать, что я могу добавить элементы в качестве свойств ребенка window, создаст ли тогда сиротскую копию те элементы –

+0

@WelshKing: типы reference (objects) будут просто ссылками, а не копиями. Типы значений будут копиями, но это не имеет значения. –

+0

большое спасибо :) –

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