質問

私は、メッセージボックスに支援するためのリンクを表示したいです。デフォルトでは、テキストは非選択文字列として表示されます。

役に立ちましたか?

解決

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")

このコードは、フォームのLoadイベントにすることはできません注意することが重要、ヘルプボタンは、リンクを開くことができません。

他のヒント

あなたは LinkLabel のコントロールを使用することができますこのため、独自のFormに。残念ながら、MessageBoxフォームは、このようにカスタマイズすることができないので、あなたの目的のためにFormを模倣するために、独自のMessageBoxを作成する必要があります。

メッセージボックスはそれを行うことはありません。あなたは(Vistaで導入された)TaskDialogを使用するか、または独自のダイアログを作成する必要がありますどちらか。

- Edit--
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()メソッドを使用する必要があります。

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