26

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

4

5 回答 5

45

一种选择是在消息框中显示 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")

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

于 2009-12-02T16:02:18.423 回答
5

为此,您可以自己使用LinkLabel控件。Form不幸的是,MessageBox无法以这种方式自定义表单,因此您需要创建自己的表单Form来模仿MessageBox您的目的。

于 2009-12-02T15:51:03.087 回答
5

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

--编辑--
有一些方法可以在 XP 上伪造任务对话框。我过去使用过 CodeProject.com 上的几篇文章。

于 2009-12-02T15:52:24.100 回答
2

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

然而,在内置的 MessageBox 上,可以在按钮之间显示一个帮助按钮。

于 2009-12-02T15:55:45.480 回答
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()方法来显示添加了所有控件的表单。

于 2018-07-16T12:35:19.707 回答