メッセージボックスに役立つリンクを表示したい。デフォルトでは、テキストは選択できない文字列として表示されます。
1つのオプションは、メッセージボックスにURLをメッセージとともに表示し、そのURLに移動するためのヘルプボタンを提供することです。
MessageBox.Show(
"test message",
"caption",
MessageBoxButtons.YesNo,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
0, '0 is default otherwise use MessageBoxOptions Enum
"http://google.com",
"keyword")
このコードをフォームのロードイベントに含めることはできません。[ヘルプ]ボタンはリンクを開きません。
これには、 LinkLabel
コントロールを独自のForm
で使用できます。残念ながら、MessageBox
フォームはこの方法でカスタマイズできないため、目的に応じてForm
を模倣するために独自のMessageBox
を作成する必要があります。
MessageBoxはそれを行いません。 TaskDialog(Vistaで導入)を使用するか、独自のダイアログを作成する必要があります。
-編集-
XPでタスクダイアログを偽造する方法があります。過去に使用したCodeProject.comの記事がいくつかあります。
組み込みのメッセージボックスではなく、独自のフォームを作成する必要があり、そのフォームでLinkLabel
を使用できます。
ただし、組み込みのメッセージボックスでは、ボタンの間にヘルプボタンを表示できます。
次のように、LinkLabel
でカスタムコードを使用できます。
_ if (hyperLinks != null)
{
foreach (var link in hyperLinks)
{
var linkLabel = new LinkLabel();
linkLabel.Text = link;
linkLabel.Width = WhateverParentPanelYouHave.Width;
linkLabel.Click += LabelClicked;
WhateverParentPanelYouHave.Controls.Add(linkLabel);
}
}
_
ここで、hyperLinks
はリンクの文字列のリストです。
次に、LabelClicked
ハンドラーの場合:
_ private async void LabelClicked(object sender, EventArgs e)
{
var linkLabel = (LinkLabel) sender;
var path = linkLabel.Text;
try
{
await Task.Run(() => Process.Start($@"{path}"));
}
catch (Exception ex)
{
MessageBox.ShowMessage(ex.Message, @"An Error Has Occurred");
}
}
_
これは、LinkLabel
コントロールが追加された独自のフォームであることに注意してください。 Form
から継承し、ShowDialog()
メソッドを使用して、すべてのコントロールが追加されたフォームを表示する必要があります。