문제

메시지 상자에 도움을 줄 링크를 표시하고 싶습니다. 기본적으로 텍스트는 선택 불가능한 문자열로 표시됩니다.

도움이 되었습니까?

해결책

하나의 옵션은 메시지와 함께 메시지 상자에 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")

이 코드는 양식의로드 이벤트에있을 수 없으며 도움말 버튼이 링크를 열지 않습니다.

다른 팁

당신은 사용할 수 있습니다 LinkLabel 혼자서 통제하십시오 Form 이것을 위해. 불행히도, MessageBox 이런 식으로 양식을 사용자 정의 할 수 없으므로 직접 만들어야합니다. Form 모방하기 위해 MessageBox 당신의 목적을 위해.

MessageBox는 그렇게하지 않습니다. TaskDialog (Vista에서 소개)을 사용하거나 나만의 대화 상자를 만들어야합니다.

--편집하다--
XP에서 작업 대화 상자를 속이는 방법이 있습니다. Codeproject.com에는 과거에 사용한 기사가 몇 개 있습니다.

내장 된 메시지 상자 대신 자신의 양식을 만들어야하며 LinkLabel 그 위에.

그러나 내장 MessageBox에서는 버튼 사이에 도움말 버튼이 표시 될 수 있습니다.

몇 가지 사용자 정의 코드를 사용할 수 있습니다 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() 모든 컨트롤이 추가 된 상태에서 양식을 표시하는 메소드.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top