使用enum在c#中构建类似Messagebox的自定义Messagebox

时间:2013-02-14 01:59:35

标签: c#-4.0 messagebox

使用enum在c#

中构建自定义Messagebox,如Messagebox

我使用以下代码:

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public void Sow()
    {
        CuMessageBox.SowMessage("text", "caption", CuMessageBox.MsgBoxButtons.Yes);

        MessageBox.Show("text", "caption", MessageBoxButtons.OK);
    }
}


public class CuMessageBox
{
    public enum MsgBoxButtons { Yes, No, Ok, Cancel }
    public static void SowMessage(string text, string caption, MsgBoxButtons msg)
    {
        //Todo
    }
}

在这一行:

   CuMessageBox.SowMessage("text", "caption", CuMessageBox.MsgBoxButtons.Yes); // Custom MessageBox

我不想显示该类的名称。如何不显示类名。 C#中的消息框不会显示类的名称

我想使用此代码显示:

CuMessageBox.SowMessage("text", "caption", MsgBoxButtons.Yes); // Custom MessageBox

错误:当前上下文中不存在名称“MsgBoxButtons”

如何修复此错误。条件我不想写类名

2 个答案:

答案 0 :(得分:2)

你必须将枚举移出类,因此它不是嵌套类型。

public enum MsgBoxButtons { Yes, No, Ok, Cancel }
public class CuMessageBox
{
   // etc..
}

小心你正在做的事情,一个带有“是”或“否”的单个按钮的消息框相当奇怪。如果你想组合按钮,那么你必须至少使用[Flags]属性,这样你才能在Show call中指定多个按钮:

[Flags]
public enum MsgBoxButtons { 
   Yes = 1,
   No = 2,
   Ok = 4,
   Cancel = 8
}

或者只使用现有的MessageBoxButton枚举类型来避免这一切。

答案 1 :(得分:0)

您可以尝试将toString()添加到枚举的末尾。例如MsgBoxButtons.Yes.ToString()。