Question

Je veux afficher un lien pour aider dans une boîte de message. Par défaut, le texte est affiché sous la forme d'une chaîne non sélectionnable.

Était-ce utile?

La solution

L'une des options est afficher l'URL dans la boîte de message, accompagné d'un message et de fournir le bouton d'aide qui vous amène à cette URL:

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

Il est important de noter que ce code ne peut pas être en cas de charge de la forme, le bouton d'aide ne sera pas ouvrir le lien.

Autres conseils

Vous pouvez utiliser le LinkLabel contrôle vous-même pour cette Form. Malheureusement, la forme MessageBox ne peut pas être personnalisé de cette façon, vous devez créer votre propre Form pour imiter le MessageBox à vos besoins.

MessageBox ne le fera pas. Vous devrez soit utiliser le TaskDialog (introduit dans Vista) ou créer votre propre boîte de dialogue.

- Edit--
Il y a plusieurs façons de falsifier la boîte de dialogue de tâche sur XP. Il y a quelques articles sur CodeProject.com que je l'ai utilisé dans le passé.

Vous devez créer votre propre formulaire, au lieu du MessageBox intégré, et vous pouvez utiliser un LinkLabel dessus.

Cependant le MessageBox intégré un bouton d'aide pourrait être affiché parmi les boutons.

Vous pouvez utiliser un code personnalisé avec LinkLabel comme ceci:

        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 est une liste de chaînes pour vos liens.

Ensuite, pour votre gestionnaire de 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");
        }

      }

Gardez à l'esprit, ceci est votre propre formulaire avec le contrôle de LinkLabel ajouté. Vous devez hériter de Form et utiliser la méthode ShowDialog() pour afficher votre formulaire avec tous vos contrôles ajoutés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top