Winform消息框中的可点击URL?

时间:2009-12-02 15:46:20

标签: vb.net winforms url messagebox clickable

我想在消息框中显示帮助链接。默认情况下,文本显示为不可选字符串。

5 个答案:

答案 0 :(得分:37)

一个选项是在消息框中显示网址,并显示一条消息,并提供将您带到该网址的帮助按钮:

MessageBox.Show(
    "test message",
    "caption",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1,
    0, '0 is default otherwise use MessageBoxOptions Enum
    "http://google.com",
    "keyword")

重要的是要注意此代码不能在表单的load事件中,“帮助”按钮不会打开链接。

答案 1 :(得分:5)

您可以在自己的Form上使用LinkLabel控件。很遗憾,MessageBox表单无法以这种方式进行自定义,因此您需要创建自己的Form以模仿MessageBox用于您的目的。

答案 2 :(得分:5)

MessageBox不会这样做。您需要使用TaskDialog(在Vista中引入)或创建自己的对话框。

- Edit--
有办法在XP上伪造任务对话框。 CodeProject.com上有一些文章我过去曾用过。

答案 3 :(得分:2)

您必须创建自己的表单,而不是内置的MessageBox,并且可以在其上使用LinkLabel

但是,在内置的MessageBox中,可以在按钮之间显示“帮助”按钮。

答案 4 :(得分:1)

您可以在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()方法来显示您添加了所有控件的表单。