Klickbare URL in einem Winform Message Box?
-
11-09-2019 - |
Frage
Ich möchte einen Link zum Anzeigen in einem Meldungsfeld zu helfen. Standardmäßig wird der Text als nicht auswählbaren Zeichenfolge angezeigt.
Lösung
Eine Möglichkeit ist, die URL im Meldungsfeld angezeigt werden, zusammen mit einer Nachricht und geben Sie die Hilfe-Taste, die Sie zu dieser URL nimmt:
MessageBox.Show(
"test message",
"caption",
MessageBoxButtons.YesNo,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
0, '0 is default otherwise use MessageBoxOptions Enum
"http://google.com",
"keyword")
Wichtig diesen Code zu beachten, in dem Load-Ereignisse des Formulars nicht sein, die Hilfe-Taste nicht den Link öffnen.
Andere Tipps
Sie können über die LinkLabel
Steuer auf eigene Faust Form
dafür. Leider kann die MessageBox
Form nicht auf diese Weise angepasst werden, so dass Sie benötigen, um Ihre eigene Form
erstellen, um die MessageBox
für Ihre Zwecke zu imitieren.
MessageBox wird das nicht tun. Verringern Sie entweder den Taskdialog (eingeführt in Vista) oder erstellen Sie Ihren eigenen Dialog verwenden.
- Edit--
Es gibt Möglichkeiten, zu fälschen die Aufgabe Dialog auf XP. Es gibt ein paar Artikel auf CodeProject.com, die ich in der Vergangenheit verwendet haben.
Sie haben eine eigene Form zu erstellen, anstelle des eingebauten in MessageBox, und Sie können eine LinkLabel
auf sie aus.
Jedoch auf dem integrierten in MessageBox eine Hilfe-Taste unter den Tasten angezeigt werden.
Sie könnten einige benutzerdefinierte Code mit LinkLabel
wie folgt verwenden:
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);
}
}
Wo hyperLinks
ist eine Liste von Strings für Ihre Links.
Dann für Ihre LabelClicked
Handler:
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");
}
}
Beachten Sie, das Sie Ihre eigene Form ist mit der LinkLabel
Kontrolle hinzugefügt. Sie werden von Form
erben haben und die ShowDialog()
Methode verwenden, um Ihre Form mit allen Kontrollen hinzugefügt angezeigt werden soll.