عنوان URL القابل للنقر في مربع رسالة WinForm؟
-
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 الذي استخدمته في الماضي.
يجب عليك إنشاء النموذج الخاص بك، بدلا من صندوق MessageBox المدمج، ويمكنك استخدام 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()
طريقة لعرض النموذج الخاص بك مع إضافة عناصر التحكم الخاصة بك.