0

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' という名前は現在のコンテキストに存在しません

このエラーを修正するにはどうすればよいですか。クラス名を書きたくないという条件で

4

2 に答える 2

2

列挙型をクラスから移動して、ネストされた型にならないようにする必要があります。

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

何をしているのか気をつけてください。「はい」または「いいえ」というボタンが 1 つしかないメッセージ ボックスは、かなり奇妙です。ボタンを組み合わせたい場合は、少なくとも [Flags] 属性を使用して、Show 呼び出しで複数のボタンを指定できるようにする必要があります。

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

または、既存の MessageBoxButton 列挙型を使用して、これをすべて回避します。

于 2013-02-14T02:56:31.873 に答える
0

列挙型の末尾に toString() を追加してみてください。たとえば、MsgBoxButtons.Yes.ToString() です。

于 2013-02-14T02:02:53.657 に答える