Winform 메시지 상자에서 클릭 가능한 URL?
-
11-09-2019 - |
문제
메시지 상자에 도움을 줄 링크를 표시하고 싶습니다. 기본적으로 텍스트는 선택 불가능한 문자열로 표시됩니다.
해결책
하나의 옵션은 메시지와 함께 메시지 상자에 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()
모든 컨트롤이 추가 된 상태에서 양식을 표시하는 메소드.