【问题标题】:Use enum to build a custom Messagebox like Messagebox in c#使用枚举在c#中构建一个自定义消息框,如Messagebox
【发布时间】:2013-02-14 01:59:34
【问题描述】:

在 c# 中使用 enum 来构建一个自定义 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”

如何解决此错误。条件是我不想写类名

【问题讨论】:

    标签: c#-4.0 messagebox


    【解决方案1】:

    您必须将枚举移出类,使其不是嵌套类型。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗨,把你的枚举放在课堂之外
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      相关资源
      最近更新 更多