2016-11-28 5 views
1

ich eine benutzerdefinierte C# MessageBox mit benutzerdefinierten Buttons auch, und ich overrode Show() Methode, hier ist das die meisten meiner Code:Individuelle MessageBox Dialogresult

public partial class CustomMessageBox : Form 
{ 
    public CustomMessageBox() 
    { 
     InitializeComponent(); 
    } 
#region Variables 
public static CustomMessageBox MsgBox; 
public static DialogResult result; 
public enum CustomMessageBoxButtons { Ok, OkCancel } 
public enum CustomMessageBoxTxtBoxState { VisibleChar, PasswordChar, VisibleCharReadOnly } 
#endregion 

public static DialogResult Show(string text, string title, CustomMessageBoxButtons buttons) 
{ 
    MsgBox = new CustomMessageBox(); 
    MsgBox.txtbox_content.Text = text; 
    MsgBox.lbl_Title.Text = title; 
    result = DialogResult.No; 
    if (buttons == CustomMessageBoxButtons.Ok) 
    { 
     MsgBox.btn_ok.Location = new Point(86, 70); 
     MsgBox.btn_cancel.Visible = false; 
    } 
    MsgBox.ShowDialog(); 
    return result; 
} 

Hier die benutzerdefinierte Schaltfläche des Events

private void btn_ok_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.OK; 
} 

private void btn_cancel_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.Cancel; 
} 
private void btn_close_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
} 
Hier

Problem ist

private void flatButton1_Click(object sender, EventArgs e) 
{ 
    if (CustomMessageBox.Show("Title", "TITLEEE", CustomMessageBox.CustomMessageBoxButtons.OkCancel) ==**CustomMessageBox.MsgBox.result.Yes**) 
    { 
     CustomMessageBox.Show("Aceptaste", "AGREED", CustomMessageBox.CustomMessageBoxButtons.Ok); 
    } 
    else 
    { 
     CustomMessageBox.Show("Rechazaste", "dENIED", CustomMessageBox.CustomMessageBoxButtons.Ok); 
    } 
} 
#endregion 

Als ich meine Botschaft anrufen Box wirft mir einen Fehler auf CustomMessageBox.MsgBox.result.Yes sagte

Kann nicht mit einer WinForms Instanz Reference, QualifyIt mit einem Typ-Namen Statt

so zugegriffen wird Was kann ich tun?

Antwort

1

Sie vergleichen das Ergebnis der Show-Methode nicht mit DialogResult.

Statt mit

if (CustomMessageBox.Show("Title", "TITLEEE", CustomMessageBox.CustomMessageBoxButtons.OkCancel) == CustomMessageBox.MsgBox.result.Yes) 

Versuchen Sie es mit

if (CustomMessageBox.Show("Title", "TITLEEE", CustomMessageBox.CustomMessageBoxButtons.OkCancel) == DialogResult.Yes) 
+0

das getan, und funktioniert nicht bei allen, 'DialogResult.Yes' scheint bezeichnet zu werden, an die lokale Dialogresult-Enumeration in meinem Haupt gespeichert Form, nicht My MessageBox eins, daher funktionieren alle mit 'DialogResult.Yes' gemachten Ausdrücke nicht für MyMessageBox, – Hydralisk

+0

Nun, der Rückgabetyp Ihrer' Show' Methode ist 'DialogResult'. Daher kann der Rückgabewert, der von der 'Show'-Methode angegeben wird, nur mit 'DialogResult'-Enum-Member verglichen werden. –