web-dev-qa-db-ja.com

メッセージボックスの場所を変更するにはどうすればよいですか?

メッセージボックスの場所を変更する必要があります。ページの中央に配置したくありません。

MessageBox.Show("Hello");
11
guy

通常、標準のメッセージボックスの起動場所を変更することはできません。

あなたの質問の解決策:

11
Kyrylo M

できることは、新しいウィンドウを作成し、プロパティAllowsTransparencyをtrueに設定し、BackgroundをTransparentに設定することです。そのウィンドウに、TextBlockまたはラベルを配置し、[はい]/[いいえ]ボタンを追加することもできます。 Canvs.SetTop(Window、TopPosition)およびCanvas.SetLeft(Window、LeftPosition)を使用して、このウィンドウの場所を設定します。次に、メソッドShow()またはShowDialog()を使用してウィンドウを呼び出します。

2
Tal Malaki

MessageBoxフォームから継承する新しいフォームを作成する必要があります。これが、位置プロパティにアクセスする唯一の方法です。

2
Greg

場所を変更する方法はありますが、そのような小さなタスクには複雑すぎます。
本当にその場所を変更する必要がある場合は、それを表示し、GetForegroundWindowを使用してウィンドウハンドルを取得してから、MoveWindowを目的の場所に移動します。
しかし、私がすでに述べたように、これはあまりにも複雑です。
「OK」ボタンのラベルが付いた独自のフォームを作成するだけです。ボタンをデフォルトのウィンドウボタンとして設定し、Form1でMyWndName.ShowDialog();を実行します。

2
alex

私はすでにプロジェクトの他のいくつかのタスクにAutoItを使用しているので、メッセージボックスを移動するために別のスレッドを作成するだけです

using System.Threading;
using AutoIt;
//Namespace, class, function stuffs
//New thread BEFORE create message box - safety measure
Thread autoItThread = new Thread(delegate ()
                {
                    AutoItX.WinWait("New Message box");
                    AutoItX.WinMove("New Message box", "This box will be moved", 400, 300);
                });
                autoItThread.Start();
MessageBox.Show("This box will be moved", "New Message box");

ご注意ください

  • 座標400,300は絶対です。 0,0は左上隅になります。
  • これは画面に依存します。正確にしたい場合は、場所を特定するための他のコードが必要です
  • このタスクは、メッセージボックスを移動するのではなく、絶対位置を変更することです。
  • AutoItを入手/インストールする方法はここでは扱われていません。必要に応じて、その説明を探してください。
0
Tam Le