Domanda

Voglio visualizzare un link per aiutare in una finestra di messaggio. Per impostazione predefinita, il testo viene visualizzato come una stringa non selezionabile.

È stato utile?

Soluzione

Una possibilità è visualizzare l'URL nella finestra di messaggio, insieme a un messaggio e fornire il pulsante di aiuto che ti porta a questo URL:

MessageBox.Show(
    "test message",
    "caption",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1,
    0, '0 is default otherwise use MessageBoxOptions Enum
    "http://google.com",
    "keyword")

Importante notare questo codice non può essere nel caso di carico del modulo, il pulsante Guida non si apre il collegamento.

Altri suggerimenti

È possibile utilizzare il href="http://msdn.microsoft.com/en-us/library/system.windows.forms.linklabel.aspx" rel="noreferrer"> LinkLabel controllo Form per questo. Purtroppo, la forma MessageBox non può essere personalizzato in questo modo, quindi si avrebbe bisogno di creare il proprio Form per imitare il MessageBox per i vostri scopi.

MessageBox non lo farà. Potrete sia necessario utilizzare il TaskDialog (introdotto in Vista) o creare il proprio dialogo.

- Edit--
Ci sono modi di falsificare la finestra di attività su XP. Ci sono alcuni articoli su CodeProject.com che ho usato in passato.

È necessario creare il proprio modulo, al posto del MessageBox built-in, ed è possibile utilizzare un LinkLabel su di esso.

Tuttavia il built-in MessageBox un pulsante? Potrebbe essere visualizzato tra i pulsanti.

Si potrebbe usare un po 'di codice personalizzato con LinkLabel in questo modo:

        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);
             }
         }

Dove hyperLinks è una lista di stringhe per i link.

Poi per il vostro gestore 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");
        }

      }

Tenete a mente, questo è il vostro modulo con il controllo LinkLabel aggiunto ad esso. Dovrete ereditare da Form e utilizzare il metodo ShowDialog() per visualizzare il modulo con tutti i controlli aggiunti ad esso.

scroll top