کنترل TabControl

کنترل TabContorl به شما اجازه می‌دهد که برای پنجره‌های خود سربرگ (Tab) بسازید، شما در برنامه‌های زیادی این نوع پنجره‌ها را مشاهده کرده‌اید. برای مثال پنجره‌ی Properties فایل‌ها و سربرگ‌های برنامه‌ی Visual Studio.
tabcontrol-01tabcontrol-02
TabControl می‌تواند حاوی کنترل‌های دیگر باشد. با کلیک بر روی هر سربرگ (Tab) می‌توانید محتویات آنرا مشاهده کنید. ظاهر یک سربرگ فعال با دیگر سربرگ‌ها متفاوت است، بنابراین شما می‌توانید متوجه شوید که کدام یک از سربرگ‌ها فعال است. زمانی که شما بر روی یک سربرگ کلیک می‌کنید، کنترل‌هایی که به آن تعلق دارند نمایش داده می‌شوند. TabControl به شما اجازه می‌دهد که یک فرم را در داخل سربرگهای مختلف سازماندهی کنید، به طوری که هر سربرگ یک دسته را نمایش دهد. برای مثال، می‌توانید یک فرم که حاوی اطلاعات شخصی را در سربرگ Personal Info و پیش زمینه‌ی آموزشی را در سربرگ Educational Background قرار دهید.
برای اضافه کردن یک کنترل TabContorl ، به قسمت Containers در جعبه ابزار ( ToolBox) رفته و کنترل TabControl را بر روی فرم قرار دهید. می‌توانید سایز این کنترل را تغییر دهید اما بهترین راه استفاده از خاصیت Dock است، که باعث می‌شود تمام فضای فرم اشغال شود. به پنجره‌ی خواص (Properties) رفته و خاصیت Dock را پیدا کنید. بر روی نوار کرکره‌ای کلیک کرده و سپس دکمه‌ی وسط (Middle) را انتخاب کنید. این گزینه به این معناست که می‌تواند تمام فرم را پر کند. (به شکل زیر توجه کنید)
tabcontrol-03
TabControl شامل کنترلهای TabPage است، که هر کدام از آنها شامل سربرگ و اجزای مخصوص به خودشان هستند. این کنترل‌ها توسط خاصیت TabPages از کنترل TabControl مورد دستیابی قرار می‌گیرند. در جدول زیر لیستی از خاصیت‌های مفید کنترل TabPage را مشاهده می‌کنید.

خاصیت توضیح
Controls کنترل‌هایی که در داخل TabPage وجود دارند.
ImageIndex اندیس تصویری که برای Tabpage انتخاب می‌شود را تعیین می‌کند.
Text متنی که در دکمه‌ی سربرگ نمایش داده می‌شود.

برای اضافه کردن یک TabPage ( سربرگ صفحه‌ای)، می‌توانید بر روی فلش کوچک که در قسمت بالا و راست TabControl وجود دارد کلیک کنید. با زدن این دکمه یک منو باز می‌شود که به وسیله‌ی آن شما می‌توانید Tab ها اضافه و یا حذف کنید.
tabcontrol-04
روش دیگر، استفاده از پنجره‌ی Properties رفته و خاصیت TabPages می‌باشد. برای باز کردن TabPages Collection Editor ابتدا مطمئن شوید که کنترل TabControl فعال است سپس بر روی دکمه در کنار خاصیت TabPages کلیک کنید.
tabcontrol-05
پنجره TabPage Collection Editor به شما اجازه می‌دهد که TabPage های مختلفی را ایجاد یا حذف کرده و خواص مربوط به هرکدام از آنها را تغییر دهید. هر TabPage می‌تواند در برگیرنده‌ی کنترل‌های مخصوص به خود باشد. به عنوان مثال چندین کنترل را به سربرگ اول مانند شکل زیر اضافه کنید سپس بر روی سربرگ دیگر کلیک کرده و کنترل‌های دیگری را به آن اضافه نمایید.
tabcontrol-06
حال اجازه دهید در مورد خود TabControl توضیح دهیم. در زیر برخی از خواص مهم این کنترل ذکر شده‌اند :

خاصیت توضیح
Alignment ناحیه‌ای که Tab ها بر اساس آن تراز بندی می‌شوند. مقدار پیشفرض آن top است.
Appearance ظاهر Tab ها را تعیین می‌کند.
ImageList شامل لیستی از عکس‌هایی است که می‌توانید برای هر سربرگ تعیین کنید.
ItemSize اندازه tab را تعیین می‌کند.
Multiline به شما اجازه می‌دهد tab ها را در چندین سطر نمایش دهید. هنگامی کاربرد دارد که تعداد tab ها زیاد باشد.
SelectedIndex اندیس tab جاری را تعیین می‌کند.
SelectedTab Tab جاری را تعیین یا بر می‌گرداند.
TabCount تعداد tab های کنترل را بر می‌گرداند.
TabPages به شما اجازه مدیریت (حذف و اضافه کردن) tab ها را می‌دهد.

خاصیت Alignment مکان قرار گیری tab ها را تعیین می‌کند. در حالت پیشفرض مقدار این خاصیت برابر top است که باعث نمایش tab ها در بالای tabcontrol می‌شود. خاصیت Appearance شکل ظاهری tab ها را تعیین می‌کند. این خاصیت سه مقدار Normal (پیشفرض)، Buttons (نمایش tab ها به شکل دکمه)، FlatButtons (نمایش tab ها به شکل دکمه‌های مسطح). حالت‌های مختلف این 3 مقدار را در شکل زیر نمایش داده شده است.
tabcontrol-07
خاصیت ImageList به شما اجازه می‌دهد که برای هر tab آیکونی را مشخص کنید. این خاصیت به یک کنترل ImageList ارجاع دارد. کنترل ImageList در این خاصیت که به طور مشابه در کنترل‌های دیگری مانند TreeView هم و منوها وجود دارد مورد استفاده قرار می‌گیرد. به طور خلاصه نحوه‌ی استفاده از این کنترل برای نمایش عکس در TabControl را توضیح می‌دهیم. یک کنترل ImageList را از جعبه ابزار بر روی فرم قرار دهید. این کنترل شمای ظاهری ندارد و در قسمت کنترل‌های غیر بصری (Component tray) قرار می‌گیرد. ImageList از دو عکس زیر استفاده می‌کند.
img1img2
این دو عکس را بر روی قسمتی از هارد خود ذخیره و سپس بر روی کنترل ImageList کلیک کنید. خاصیت Images را از پنجره‌ی Properties پیدا کنید و بر روی دکمه کنار آن کلیک کنید. با کلیک بر روی این دکمه پنجره‌ی Image Collection Editor نمایش داده می‌شود.
tabcontrol-08
بر روی دکمه‌ی Add برای اضافه کردن یک عکس کلیک کنید. برای هر دو عکسی که قبلاً بر روی هارد ذخیره کرده‌اید این مرحله را تکرار کنید و در آخر بر روی دکمه‌ی OK کلیک کنید. سپس خاصیت ImageList از کنترل TabControl را پیدا کرده و ارجاع این کنترل را به آن نسبت دهید. برای قرار دادن عکس‌ها در کنار هر tab روی tab مورد نظر کلیک کرده و سپس در پنجره‌ی Properties خاصیت ImageIndex آن را پیدا کنید. حال بر روی دکمه‌ی پایین افتادنی کنار آن کلیک و عکس مورد نظر خود را انتخاب نمایید. برای چند tab مختلف می‌توانید عکس مشابه ای را انتخاب کنید.
tabcontrol-09
برای تغییر اندازه‌ی هر تب آن را انتخاب کنید و خاصیت ItemSize آنرا تغییر دهید. این کار زمانی مفید است که اندازه عکس‌های کناری tab بسیار بزرگ باشد. اگر تعاد tab ها کنترل بسیار زیاد و از اندازه‌ی عرض فرم بیشتر باشد، دکمه‌های فلش دار در سمت راست و بالای tabcontrol نمایش داده می‌شوند و شما می‌توانید با استفاده از آنها به تب‌های دیگر دسترسی یابید.
tabcontrol-10tabcontrol-11
برای نمایش tab ها در چند سطر می‌توانید از خاصیت MultiLine استفاده کنید.
tabcontrol-10

خاصیت TabPages به شما اجازه حذف یا اضافه کردن tab ها را می‌دهد. در زیر با کدنویسی tab ها مختلفی را ایجاد کرده و به کنترل اضافه می‌کنیم.

TabPage tab1 = new TabPage("Tab 1");
TabPage tab2 = new TabPage("Tab 2");
TabPage tab3 = new TabPage("Tab 3");
tabControl1.TabPages.Add(tab1);
tabControl1.TabPages.Add(tab2);
tabControl1.TabPages.Add(tab3);

خصوصیت TabPages دارای نوع TabPageCollection است که مجموعه‌ای از اشیاء TabPage می‌باشد. بنابراین شما می‌توانید از متدهای عمومی مانند Add ،Remove و AddRange استفاده کنید. برای تعیین تب جاری می‌توان از خصوصیت SelectedIndex استفاده کرد. این خصوصیت اندیس tab جاری را تعیین می‌کند.

MessageBox.Show("The selected tab is " + tabControl1.TabPages[tabControl1.SelectedIndex].Text);

خصوصیت SelectedTab شیء tab جاری را تعیین یا بر می‌گرداند.

TabPage selectedTab = tabControl1.SelectedTab;
MessageBox.Show("The selected tab is " + selectedTab.Text);

خصوصیت TabCount تعداد تب‌های کنترل را بر می‌گرداند. وقتی که در بین tab های مختلف حرکت می‌کنید رویداد SelectedIndexChanged اتفاق می افتد. کنترل TabControl زمانی مفید است که فرم از قسمت‌های مختلفی تشکیل شده باشد و فضای کافی در اختیار نداشته باشید. به عنوان یک مثال زمانی که برنامه دارای قسمتی برای تعیین تنظیمات خود باشد می‌توانید از این کنترل استفاده کنید.