Frage

Ich möchte einen Link zum Anzeigen in einem Meldungsfeld zu helfen. Standardmäßig wird der Text als nicht auswählbaren Zeichenfolge angezeigt.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top