Winform消息框中的可点击URL?

问题描述 投票:23回答:5

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

vb.net winforms url messagebox clickable
5个回答
37
投票

一个选项是在消息框中显示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事件中,Help按钮不会打开链接。


5
投票

您可以在自己的LinkLabel上使用Form控件。不幸的是,MessageBox表格不能以这种方式定制,因此您需要创建自己的Form来模仿MessageBox以达到您的目的。


5
投票

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

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


2
投票

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

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


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()方法显示您的表单,并添加所有控件。

© www.soinside.com 2019 - 2024. All rights reserved.