کنترل LinkLable

کنترل LinkLable شبیه کنترل Lable (برچسب) است، با این تفاوت که این کنترل یک زیر خط دارد که شبیه به یک لینک در صفحات وب است. کنترل LinkLable می‌تواند برای لینک کردن به فایل‌ها، دایرکتوری‌ها، و حتی صفحات وب استفاده شود. وقتی نشانگر ماوس را بر روی LinkLable ببرید، آیکن نشانگر ماوس به یک دست تغییر می‌کند.
link-label-01
خواص این کنترل را در جدول زیر مشاهده می‌کنید:

خاصیت توضیحات
BorderStyle حالت حاشیه‌ی دور برچسب را مشخص می‌کند.
FlatStyle ظاهر این کنترل را تعیین می‌کند. وقتی مقدار آن برابر با Popup باشد، اگر بر روی آن کمی منتظر بمانید دکمه‌ی آن برجسته می‌شود.
Links به شما اجازه می‌دهد که در داخل یک متن چند لینک داشته باشید.
LinkArea متن لینک مورد نظر را مشخص می‌کند.
LinkColor رنگ لینک مشاهده نشده را مشخص می‌کند.
LinkVisited وقتی مقدار آن برابر با True باشد، رنگ لینک با رنگ خاصیت VisitedLinkColor عوض می‌شود.
TextAlign مکان متن داخل کنترل را مشخص می‌کند.
VisitedLinkColor رنگ لینک مشاهده شده را مشخص می‌کند.

خاصیت LinkArea به شما اجازه می‌دهد که فقط قسمتی از متن را به عنوان لینک استفاده کنید. خاصیت LinkLabel به دو مقدار اندیس شروع و طول نیاز دارد.
برای مثال شما می‌خواهید فقط قسمت “C#” به عنوان لینک نمایش داده شود، برای اینکار باید مقدار اندیس را برابر با 7 و طول آنرا برابر با 2 قرار دهید. همچنین شما می‌توانید بر روی دکمه‌ی سمت راست خاصیت LinkArea در پنجره‌ی خواص (Properties) کلیک کنید تا پنجره‌ی LinkArea Editor نمایش داده شود. در پنجره‌ی باز شده به راحتی قسمتی را که می‌خواهید به عنوان لینک نمایش داده شود را انتخاب کرده و دکمه‌ی OK را بزنید.
link-label-02
link-label-03
خاصیت Links به شما اجازه می‌دهد که در داخل یک متن چند لینک داشته باشید. متاسفانه، شما از طریق پنجره‌ی خواص (Properties) نمی‌توانید به این خاصیت دسترسی داشته باشید، برای دسترسی به این قابلیت، باید کدها و مقادیر آنها را به صورت دستی وارد کنید. شما می‌توانید کدهای زیر را در رویداد Load فرم قرار دهید.

private void LinkLabelForm_Load(object sender, EventArgs e)
{
    linkLabel1.Links.Add(new LinkLabel.Link(0, 6));
    linkLabel1.Links.Add(new LinkLabel.Link(10, 9));
}

link-label-04
خاصیت Links مجموعه‌ای از اشیاء LinkLabel.Link می‌باشد در نتیجه از متد ()Add و ایجاد یک نمونه از کلاس LinkLabel.Link استفاده کرده‌ایم (به این نکته توجه کنید که Link کلاسی است که، در داخل کلاس LinkLable قرار دارد). کنترل LinkLable باید دارای یک کنترل کننده‌ی رویداد برای رویداد LinkClicked باشد. مکانی که قرار است با کلیک بر روی این کنترل، به آنجا منتقل شوید، در داخل کنترل کننده‌ی رویداد مشخص می‌شود.

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    System.Diagnostics.Process.Start("http://visualcsharptutorials.com");
    linkLabel1.LinkVisited = true;
}

شما می‌توانید از متد ()System.Diagnostics.Process.Start برای باز کردن مرورگر و مرور صفحات وب استفاده کنید. سپس مقدار خاصیت LinkVisited را به True تغییر دادیم تا زمانی که یک لینک مشاهده شد، رنگ آن تغییر کند. به یاد داشته باشید که شما همچنین می‌توانید یک مسیر را بر روی هارد انتخاب کنید. اگر در داخل کنترل LinkLabel بیش از یک لینک دارید، باید از خاصیت Links از LinkLabelLinkClickedEventArgs استفاده کنید، تا این رویداد بداند که دقیقاً بر روی کدام لینک کلیک شده است.
link-label-05

private void LinkLabelForm_Load(object sender, EventArgs e)
{
    LinkLabel.Link googleLink = new LinkLabel.Link(0, 6);
    LinkLabel.Link bingLink = new LinkLabel.Link(11, 4);

    googleLink.Name = "Google";
    bingLink.Name = "Bing";

    linkLabel1.Links.Add(googleLink);
    linkLabel1.Links.Add(bingLink);
}

ما یک نمونه‌های دیگر از LinkLabel با مکانهای مربوط به خودشان ایجاد کردیم. حال ما هر نام را به لینک مربوط به آن از طریق خاصیت Name وصل می‌کنیم.

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    switch (e.Link.Name)
    {
        case "Google":
            System.Diagnostics.Process.Start("http://google.com");
            break;
        case "Bing":
            System.Diagnostics.Process.Start("http://bing.com");
            break;
    }
}

در داخل کنترل کننده‌ی رویداد LinkClicked کنترل LinkLabel، مکان لینکی که فشرده شده است با استفاده از خاصیت Link دریافت می‌کنیم. و در آخر تست می‌کنیم که بر روی نام کدام لینک کلیک شده است مرورگر سایت مربوط به آن را باز کند.
link-label-06