2010-04-19 2 views
1

У меня есть две формы. Первая форма mainForm, это никогда не происходит. При открытии второй формы (saveForm) она будет отображаться сверху. Когда я закрываю эту форму, я хочу, чтобы определенная часть кода в mainForm запускалась. Я предполагаю, что это правильный способ добиться этого?public DialogResult ShowDialog() help!

код на SaveForm, когда я закрываю и вернуться к MainForm:

private void btnSaveDetails_Click(object sender, EventArgs e) 
    { 
     Delivery d = new Delivery(txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text, txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, txtStatusBox.Text); 
     mainForm.myDeliveries.Add(d); 
     this.Close(); 
    } 

Есть идеи?

+0

Вы можете уточнить? –

+0

Что ты имеешь в виду? – SLaks

+0

Я изменю вопрос, был слишком расплывчатым. – sark9012

ответ

1

Вы должны установить Свойство DialogResult вашего диалогового окна. Либо явно в коде, либо путем проверки результата диалога на кнопку в вашей форме.

private void btnSaveDetails_Click(object sender, EventArgs e) 
{ 
    Delivery d = new Delivery(
     txtNameBox.Text, txtAddressBox.Text, txtDayBox.Text, 
     txtTimeBox.Text, txtMealBox.Text, txtInstructionsBox.Text, 
     txtStatusBox.Text 
    ); 
    mainForm.myDeliveries.Add(d); 
    this.DialogResult = DialogResults.OK; 
} 

Нет необходимости вызывать Close() установки this.DialogResult делает это для вас, если вы назвали диалог с помощью ShowDialog().

При вызове формы вы должны сделать следующее:

var frm = new MyForm(); 
if (frm.ShowDialog() == DialogResults.OK) { 
    // do what you want to do on success. 
} 
+0

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

+0

@ Luke: см. Править. – AxelEckenberger

3

Вы можете использовать возвращаемый DialogResult для внесения некоторых изменений в ваше приложение. Например, если вы предоставили пользователю диалоговое окно с вопросом, хотите ли они удалить все файлы, и они отвечают, нажав кнопку «Да» в диалоговом окне, вы удалите файлы.

Более подробную информацию о том, как использовать DialogResult и ShowDialog VCAN можно найти здесь: DialogResult

UPDATE: Если код размещен от вашей формы «ребенок», то, что вы делали до сих пор, вероятно, хорошо, НО, вам все равно необходимо предоставить DialogResult в этой форме для связи с mainForm, чтобы что-то было сделано. Например, вы могли бы сделать следующее перед this.Close():

this.DialogResult = DialogResult.OK; 

Затем в коде после вызов childForm.ShowDialog(), проверьте DialogResult. Если он равен DialogResult.OK, то вы можете выполнить любую задачу, которая вам нужна, чтобы указать, что пользователь нажал кнопку «ОК».

(И, на стороне записки, Dispose() является не вызывается при использовании ShowDialog(), вам нужно очистить вещи самостоятельно, если это необходимо.)

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