Bagaimana cara membuat kotak pesan dengan pilihan "Ya", "Tidak" dan DialogResult?

345

Saya ingin membuat Ya / Tidak dipilih MessageBox sederhana, tapi saya pikir itu tidak masuk akal untuk merancang formulir untuk itu. Saya pikir saya bisa menggunakan MessageBox, menambahkan tombol, dll untuk mencapai ini. Ini sederhana, tetapi karena tidak ada DialogResult yang dikembalikan, bagaimana cara mengambil hasilnya?

Petr
sumber

Jawaban:

791

Ini harus dilakukan:

DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}
Mikael Svenson
sumber
6
Jawabannya adalah untuk Windows, bukan Windows Phone yang saya tidak tahu banyak tentang :)
Mikael Svenson
22
'DialogResult' tidak berfungsi di wpf. Anda harus menggunakan 'MessageBoxResult'.
matsolof
56
DialogResult dr = MessageBox.Show("Are you happy now?", 
                      "Mood Test", MessageBoxButtons.YesNo);
switch(dr)
{
   case DialogResult.Yes:
      break;
   case DialogResult.No:
      break;
}

Kelas MessageBox adalah apa yang Anda cari.

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

Ini mengembalikan DialogResult yang dapat Anda periksa.

Sebagai contoh,

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

MessageBox memang menghasilkan DialogResults

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

Anda juga dapat menentukan tombol dengan cukup mudah. Dokumentasi lebih lanjut dapat ditemukan di http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx

David
sumber
12

Menggunakan:

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 digunakan pada Windows Phone alih-alih DialogResult ...

Khateeb321
sumber
6

Anda juga dapat menggunakan varian ini dengan string teks, inilah kode lengkap yang diubah (Kode dari Mikael), diuji dalam 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
}

Anda bisa setelahnya

.YesNo

masukkan ikon pesan

, MessageBoxIcon.Question
pengguna2422690
sumber
5

@Mikael Jawaban Svenson benar. Saya hanya ingin menambahkan sedikit tambahan ke dalamnya:

Ikon Messagebox juga dapat dimasukkan memiliki properti tambahan seperti di bawah ini:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
Alston Antony
sumber
2
if (MessageBox.Show("Please confirm before proceed" + "\n" + "Do you want to Continue ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{
//do something if YES
}

else

{
//do something if NO
}

Ini akan Meminta kotak pesan seperti ini.

Sudhakar MuthuKrishnan
sumber
0
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
}

Lihat lebih detail dari sini

Keras
sumber
0

Kode sederhana ini berhasil untuk saya. Saya mengambilnya dari MSDN di sini:

https://social.msdn.microsoft.com/Forums/en-US/d1092a96-96b0-4ca4-b716-0c8e55e42ee9/how-can-i-manage-messagebox-result-?forum=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'
Kyle Julé
sumber
0

Coba ini:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Ken
sumber