2012-05-08 3 views
0

В приведенном ниже коде я открываю форму с помощью frmContact.ShowDialog(); а затем, когда я закрываю форму, нажимая кнопку «ОК» в форме, она закрывается, но затем она открывается снова, потому что у меня есть оператор frmContact.ShowDialog() в инструкции if. Может ли это быть сделано каким-то другим способом?Формы открываются два раза

 // Button add new customer 
    private void btnAdd_Click(object sender, EventArgs e) 
    { 
     ContactForm frmContact = new ContactForm(); 

     frmContact.ShowDialog(); // Show the contact form window 

     if (frmContact.ShowDialog() == DialogResult.OK) 
     { 
      MessageBox.Show("OK", "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
     } 
    } 

ответ

6

Просто избавитесь от первых ShowDialog.

+0

Aha! Это было просто! Благодаря! :) –

+0

Добро пожаловать! – Nick

8

Просто удалите первый вызов:

ContactForm frmContact = new ContactForm(); 

if (frmContact.ShowDialog() == DialogResult.OK) 
{ 
    MessageBox.Show("OK", "Test", ...); 
} 

Другой вариант (особенно полезно, если код, который показывает форму не рядом с кодом, который проверяет возвращаемое значение) заключается в использовании Form.DialogResult:

ContactForm frmContact = new ContactForm(); 
frmContact.ShowDialog(); 

if (frmContact.DialogResult == DialogResult.OK) 
{ 
    MessageBox.Show("OK", "Test", ...); 
} 
2

Просто оставьте второй, если, например:

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    ContactForm frmContact = new ContactForm(); 

    if (frmContact.ShowDialog() == DialogResult.OK) //just one call 
    { 
     MessageBox.Show("OK", "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
    } 
} 
0
private void btnAdd_Click(object sender, EventArgs e) 
{ 
    ContactForm frmContact = new ContactForm(); 

    frmContact.ShowDialog(); 
} 
Смежные вопросы