Como faço para criar uma caixa de mensagem com opções "sim", "não" e um dialograsult?

StackOverflow https://stackoverflow.com/questions/3036829

  •  27-09-2019
  •  | 
  •  

Pergunta

Quero fazer simplificar sim/não a caixa de messagebox, mas acho que é um absurdo projetar um formulário para isso. Eu pensei que poderia usar o MessageBox, adicionar botões, etc. para conseguir isso. É simples, mas como não há dialogresult devolvido, como recuperar o resultado?

Foi útil?

Solução

Isso deve servir:

DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

Outras dicas

DialogResult dr = MessageBox.Show("Are you happy now?", 
                      "Mood Test", MessageBoxButtons.YesNo);
switch(dr)
{
   case DialogResult.Yes:
      break;
   case DialogResult.No:
      break;
}

Caixa de mensagem A classe é o que você está procurando.

MessageBox.Show(title, text, messageboxbuttons.yes/no)

Isso retorna um dialograsult que você pode verificar.

Por exemplo,

if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
   //do something
}

A caixa de mensagem faz produzir um dialogresultos

DialogResult r = MessageBox.Show("Some question here");

Você também pode especificar os botões com bastante facilidade. Mais documentação pode ser encontrada em http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx

Usar:

MessageBoxResult m = MessageBox.Show("The file will be saved here.", "File Save", MessageBoxButton.OKCancel);
if(m == m.Yes)
{
    // Do something
}
else if (m == m.No)
{
    // Do something else
}

MessageBoxResult é usado no Windows Phone em vez de DIATILOGRESULT ...

Você também pode usar essa variante com seqüências de texto, aqui está o código alterado completo (código de Mikael), testado em C# 2012:

// Variable
string MessageBoxTitle = "Some Title";
string MessageBoxContent = "Sure";

DialogResult dialogResult = MessageBox.Show(MessageBoxContent, MessageBoxTitle, MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

Você pode depois

.YesNo

Insira um ícone de mensagem

, MessageBoxIcon.Question

A resposta de @Mikael Svenson está correta. Eu só queria adicionar uma pequena adição a ele:

O ícone MessageBox também pode ser incluído possui uma propriedade adicional, como abaixo:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
dynamic MsgResult = this.ShowMessageBox("Do you want to cancel all pending changes ?", "Cancel Changes", MessageBoxOption.YesNo);

if (MsgResult == System.Windows.MessageBoxResult.Yes)
{
    enter code here
}
else 
{
    enter code here
}

Verifique mais detalhes de aqui

Este código simples funcionou para mim. Eu peguei do msdn aqui:

https://social.msdn.microsoft.com/forums/en-us/d1092a96-96b0-4ca4-b716-0c8e55e42ee9/how-can--anage-messagebox-result-full-foux=vsexpressvcs

if (System.Windows.Forms.MessageBox.Show
            ("Are you sure you want to add the audit?", "Add",
            System.Windows.Forms.MessageBoxButtons.YesNo, 
            System.Windows.Forms.MessageBoxIcon.Question)
            ==System.Windows.Forms.DialogResult.Yes)                
        // Do stuff after 'YES is clicked'
        else
        // DO stuff after 'NO is clicked'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top