どのように私はメッセージボックスボタンのキャプションを得るのですか?

StackOverflow https://stackoverflow.com/questions/932401

  •  06-09-2019
  •  | 
  •  

質問

のMessageBoxクラスとして、私はあなたがテキストをコピーすることができますカスタムメッセージボックスを作ってるんだが、私はそれが正確に標準メッセージボックスのように見えると思ったので、私はシステムの言語が何であれにボタンのテキストを設定したいと思いますありません。 誰もがそのテキスト(「はい」、「いいえ」、「キャンセル」など)を取得する方法を知っていますか?ます。

役に立ちましたか?

解決

Snarfblamのリンクをあなたの答えのおかげで、私は残りの部分を見つけ出すことができます。

class Program {

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
[DllImport("kernel32")]
static extern IntPtr LoadLibrary(string lpFileName);

private const uint OK_CAPTION = 800;
private const uint CANCEL_CAPTION = 801;
private const uint ABORT_CAPTION = 802;
private const uint RETRY_CAPTION = 803;
private const uint IGNORE_CAPTION = 804;
private const uint YES_CAPTION = 805;
private const uint NO_CAPTION = 806;
private const uint CLOSE_CAPTION = 807;
private const uint HELP_CAPTION = 808;
private const uint TRYAGAIN_CAPTION = 809;
private const uint CONTINUE_CAPTION = 810;

static void Main(string[] args) {
    StringBuilder sb = new StringBuilder(256);

    IntPtr user32 = LoadLibrary(Environment.SystemDirectory + "\\User32.dll");

    LoadString(user32, OK_CAPTION, sb, sb.Capacity);
    string ok = sb.ToString();

    LoadString(user32, CANCEL_CAPTION, sb, sb.Capacity);
    string cancel = sb.ToString();

    LoadString(user32, ABORT_CAPTION, sb, sb.Capacity);
    string abort = sb.ToString();

    LoadString(user32, RETRY_CAPTION, sb, sb.Capacity);
    string retry = sb.ToString();

    LoadString(user32, IGNORE_CAPTION, sb, sb.Capacity);
    string ignore = sb.ToString();

    LoadString(user32, YES_CAPTION, sb, sb.Capacity);
    string yes = sb.ToString();

    LoadString(user32, NO_CAPTION, sb, sb.Capacity);
    string no = sb.ToString();

    LoadString(user32, CLOSE_CAPTION, sb, sb.Capacity);
    string close = sb.ToString();

    LoadString(user32, HELP_CAPTION, sb, sb.Capacity);
    string help = sb.ToString();

    LoadString(user32, TRYAGAIN_CAPTION, sb, sb.Capacity);
    string tryAgain = sb.ToString();

    LoadString(user32, CONTINUE_CAPTION, sb, sb.Capacity);
    string cont = sb.ToString();

}

他のヒント

これらの文字列は、User32.dllのライブラリに格納されているように見えます。詳細はピュアBASICフォーラムでこの議論には、にあります。底部に向かっています。

あなたはリフレクターの中のSystem.Windows.Forms.dllを開くことがありますし、それはボタンのテキストを設定する方法を参照してください。

は、あなたがそのメッセージを入力した時点で、あなたは「はい」、「いいえ」、「OK」、「キャンセル」と入力している可能性が...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top