Winform消息框中的可点击URL?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Winform消息框中的可点击URL?相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

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

另一答案

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

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

另一答案

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

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

另一答案

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

以上是关于Winform消息框中的可点击URL?的主要内容,如果未能解决你的问题,请参考以下文章

C#-WinForm-弹窗提示框-如何知道用户点击的是哪个按钮?

c#winform使用post方法定点传送用户名和密码到指定url网页中的

滑块菜单片段中的可交换选项卡

请问下,在ext的可编辑grid中点击回车事件,怎样将光标聚焦到grid外的某个文本框中?

2021-11-18 WinFrom面试题 Winform中,怎么实现Form2中点击打开按钮,打开Form1,输入文本,再点击Form1中的“确定”按钮,把输入的值显示到Form2的文本框中?

winform调用webservice方法