Winform消息框中的可点击URL?
Posted
技术标签:
【中文标题】Winform消息框中的可点击URL?【英文标题】:Clickable URL in a Winform Message Box? 【发布时间】:2010-12-22 11:15:18 【问题描述】:我想在消息框中显示帮助链接。默认情况下,文本显示为不可选择的字符串。
【问题讨论】:
听起来像是两个请求。使用表单而不是 MessageBox。 【参考方案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")
需要注意此代码不能在表单的加载事件中,帮助按钮不会打开链接。
【讨论】:
谢谢,创造性的解决方案在我的情况下就足够了。真的很感激。 (给大家点赞) 请注意,"keyword"
将附加在 URL 的 # 之后作为锚引用。 IE。 google.com#keyword
在 C# 中使用此代码单击帮助按钮没有任何作用【参考方案2】:
为此,您可以在自己的Form
上使用LinkLabel
控件。不幸的是,MessageBox
表单无法以这种方式自定义,因此您需要创建自己的 Form
来模仿 MessageBox
以达到您的目的。
【讨论】:
【参考方案3】:MessageBox 不会这样做。您需要使用 TaskDialog(在 Vista 中引入)或创建自己的对话框。
--编辑-- 有一些方法可以伪造 XP 上的任务对话框。 CodeProject.com 上有几篇我以前用过的文章。
【讨论】:
【参考方案4】:您必须创建自己的表单,而不是内置的 MessageBox,并且可以在其上使用LinkLabel
。
但是在内置 MessageBox 上,可以在按钮之间显示帮助按钮。
【讨论】:
【参考方案5】:您可以像这样使用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?的主要内容,如果未能解决你的问题,请参考以下文章