کنترل ها
کنترلها اجزای بصری هستند که به وسیلهی آنها محیطهای گرافیکی (GUI) ساخته میشود. هرچیزی که شما در یک محیط گرافیکی میبینید یک کنترل است. کنترلها در دستههای مختلفی در قسمت نوار ابزار قرار دارند که در شکل زیر آنها را مشاهده می کنید:
خواص کنترلها
در قسمت زیر بعضی از خاصیت های مفید کلاس Control را مشاهده میکنید.
خاصیت | توضیح |
Background | رنگ پس زمینهی کنترل را مشخص میکند. |
BorderBrush | رنگ پس زمینه و خطوط اطراف کنترل را مشخص میکند. |
BorderThickness | ضخامت خطوط اطراف کنترل را مشخص میکند. |
ContextMenu | به شما اجازه میدهد که یک توضیح را به کنترل خود در مورد آن اضافه کنید. |
Cursor | شکل نشانگر ماوس وقتی که ماوس بر روی کنترل قرار میگیرد را مشخص میکند. |
Focusable | فوکوس گرفتن یا نگرفتن یک کنترل را مشخص میکند. |
FontFamily | نوع فونت کنترل را مشخص میکند. |
FontSize | اندازه فونت کنترل را مشخص میکند. |
FontStyle | سبک فونت را مشخص میکند. برای مثال Italic ،Oblique و … . |
FontWeight | وزن یا ضخامت فونت را مشخص میکند. |
Foreground | رنگ زمینه فونت را مشخص میکند. |
HandlesScrolling | مشخص میکند که آیا کنترل مورد نظر از اسکرول پشتیبانی میکند یا خیر. |
Height | ارتفاع عنصر مورد نظر را مشخص میکند. |
HorizontalAlignment | به شما اجازه میدهد تا مکان قرار گیری عناصر را در جهت افقی مشخص کنید. مقادیری که میتواند بگیر عبارتند از : Center ،Right ،Left و Stretch |
HorizontalContentAlignment | به شما اجازه میدهد تا مکان قرار گیری محتوای یک کنترل را در جهت افقی مشخص کنید. |
IsEnabled | مشخص میکند که آیا کنترل فعال است یا خیر. |
IsFocused | مشخص میکند که آیا بر روی کنترل فوکوس شده است یا خیر. |
IsLoaded | مشخص میکند که آیا کنترل برای نمایش در صفحه بارگذاری شده است یا خیر. |
IsMouseOver | مشخص میکند که آیا کرسر ماوس بر روی کنترل قرار گرفته است یا خیر. |
IsTabStop | مشخص میکند که آیا این امکان وجود دارد که با استفاده از کلید Tab بر روی کنترل مورد نظر فوکوس کنیم یا خیر. |
IsVisible | مشخص میکند که آیا کنترل قابل نمایش است یا خیر. |
Language | به شما اجازه میدهد تا تنظیمات زبان را برای کنترل مشخص کنید. برای مثال میتوانید مشخص کنید که برنامه ممیز را به شکلی نمایش دهد. چون ممیز را میتوانیم با استفاده از کاراکتر “.” یا “/” نمایش دهیم. |
LayoutTransform | به شما اجازه میدهد تا یک انتقال گرافیکی را برای اعمال به کنترل خود تعیین کنید. برای مثال با استفاده از این خاصیت میتوانید یک دکمه را به اندازه 45 درجه بچرخانید. |
Margin | به شما اجازه میدهد تا یک حاشیه را اطراف عنصر مورد نظر خود ایجاد کنید. |
MaxHeight | به شما اجازه میدهد تا حداکثر ارتفاع ممکن برای عنصر مورد نظر خود را تعیین کنید. |
MaxWidth | به شما اجازه میدهد تا حداکثر عرض ممکن برای عنصر مورد نظر خود را تعیین کنید. |
MinHeight | به شما اجازه میدهد تا حداقل ارتفاع ممکن برای عنصر مورد نظر خود را تعیین کنید. |
MinWidth | به شما اجازه میدهد تا حداقل عرض ممکن برای عنصر مورد نظر خود را تعیین کنید. |
Name | به شما اجازه میدهد تا یک نام را برای کنترل خود در نظر بگیرید تا با استفاده از آن نام بتوانید در کدهای سی شارپ به آن کنترل دسترسی داشته باشید. |
Opacity | به شما اجازه میدهد تا میزان شفافیت یک کنترل را مشخص کنید. |
Padding | به شما اجازه میدهد تا یک حاشیه را داخل فضای کنترل ایجاد کنید. |
Parent | به شما اجازه میدهد تا والد منطقی، عنصر فعلی را مشخص کنید. |
TabIndex | به ما اجازه میدهد تا ترتیب عناصر را زمانی که کاربر کلید TAB را فشار میدهد مشخص کنید. |
ToolTip | به شما اجازه میدهد تا یک ToolTip را برای کنترل خود ایجاد کنید. به این ترتیب زمانی که کرسر ماوس برای چند لحظه بر روی کنترل مورد نظر شما قرار بگیرد، محتوایی که در ToolTip مشخص کردید نمایش داده میشود. این محتوا میتواند برای مثال یک متن ساده یا یک تصویر باشد. |
VerticalAlignment | به شما اجازه میدهد تا مکان قرار گیری عناصر را در جهت عمودی مشخص کنید. مقادیری که میتواند بگیر عبارتند از : Center ،Right ،Left و Stretch |
VerticalContentAlignment | به شما اجازه میدهد تا مکان قرار گیری محتوای یک کنترل را در جهت عمودی مشخص کنید. |
Visibility | وضعیت نمایش یک کنترل را مشخص میکند. |
Width | به شما اجازه میدهد تا عرض یک کنترل را مشخص کنید. |
مهمترین خاصیت در جدول بالا خاصیت Name است. این خاصیت به شما اجازه میدهد که از آن نام برای ارجاع به کنترل در قسمت کد نویسی استفاده کنید. در این قسمت به بحث در مورد بعضی از مشخصههایی که در بیشتر کنترلها وجود دارند میپردازیم.
تغییر رنگ پس زمینه کنترل
ما از خاصیت Background کنترل برای تغییر رنگ زمینهی آن استفاده میکنیم. خاصیت Brush را در پنجرهی Properties پیدا کنید و بر روی فلش کوچک کنار آن کلیک کنید. شما یک پنجره با 5 سربرگ مشاهده میکنید. هر سربرگ کار خاصی انجام میدهد.
سربرگ 1 یا No Brush رنگ و عکس پس زمینه کنترل را حذف میکند.
سربرگ 2 یا Solid color brush یک طیف رنگی در اخیار شما قرار میدهد و شما میتوانید یک رنگ برای پس زمینه کنترل انتخاب کنید.
سربرگ 3 یا Gradient brush یک پس زمینه به صورت طیف رنگی ایجاد میکند.
سربرگ 4 یا Tile brush یک عکس به پس زمینه کنترل اختصاص میدهد.
سربرگ 5 یا Tile brush شامل رنگهایی است که برای استفاده در صفحات وب مناسب هستند.
اضافه کردن یک عکس به زمینهی کنترل
شما میتوانید عکس زمینهی یک کنترل را به وسیلهی خاصیت Tile brush تغییر دهید. به عنوان مثال ما میخواهیم عکس زمینهی یک فرم را تغییر دهیم. برای اینکار ابتدا فرم را انتخاب کرده و سپس به پنجرهی Properties رفته و خاصیت Tile brush را انتخاب میکنیم. در این قسمت کادری وجود دارد که به ما اجازه میدهد آدرس تصویر خود را مشخص کنیم:
پس از وارد کردن آدرس عکس، یک پیشنمایش از آن به صورت زیر نمایش داده میشود:
حالت قرار گیری و سایز تصویر ممکن است چیزی نباشد که شما انتظار داشتهاید. میتوان از خاصیتهای TileMode و Stretch به صورت زیر استفاده کرد:
خاصیت Name
از خاصیت Name برای نامگذاری کنترلها استفاده میشود :
نامی که به کنترل اختصاص میدهیم در کد نویسی به درد ما میخورد. فرض کنید که یک دکمه قرار است عملیات ذخیره اطلاعات در دیتابیس را انجام دهد. برای این منظور خاصیت Name آن را به buttonSave تغییر میدهیم تا در محیط کدنویسی آن را راحتتر شناسایی کنیم :
حال اگر بر روی آن دوبار کلیک کنید، مشاهده میکنید که نام دکمه همان نامی است که در خاصیت Name به آن اختصاص دادهایم :
و اگر در محیط کدنویسی به دنبال آن بگردیم، پیدا کردن این کنترل بسیار راحت است :
شاید در مورد یک یا چند مورد کنترل، نامگذاری زیاد کارا نباشد ولی وقتی که تعداد کنترلها زیاد میشود بهتر است که همه آنها را نامگذاری کنید تا در موقع کدنویسی گیج نشوید.
تغییر قلم متن یک کنترل
ما میتوانیم نوع قلم، رنگ، سایز، و حالت قلم یک کنترل را به وسیلهی خواص Brush و Text تغییر دهیم. برای مثال ما یک دکمه را ایجاد میکنیم.
برای تغییر نوع قلم این کنترل ابتدا میبایست خاصیت Text را در پنجرهی Properties پیدا کنیم. سپس در سمت چپ این خاصیت یک علامت فلش را مشاهده میکنیم. بر روی آن کلیک کرده تا تمامی زیر مجموعههای آنرا مشاهده کنیم.
منوی باز شونده FontFamily که نوع قلم را تعریف میکند. منوی باز شونده FontSize اندازهی قلم را مشخص میکند. از آیکونهای پایینی برای ضخیم و کج کردن متن کنترل به کار استفاده میشود. در حالیکه دکمه در حالت انتخاب است، خاصیت Btush را پیدا کنید. یکی از زیر مجموعههای این خاصیت، خاصیت Forground است که از آن برای تغییر رنگ متن دکمه میتوان استفاده نمود:
فعال کردن و غیر فعال کردن یک کنترل
میتوان از خاصیت IsEnabled برای فعال کردن یا غیر فعال کردن یک کنترل استفاده کنیم. برای غیر فعال کردن یک کنترل کافیست تیک کنار این خاصیت را بر داریم که در اینصورت مقدار خاصیت برابر False شده و کنترل غیر فعال می شود:
وقتی یک کنترل را غیر فعال میشود، ظاهر آن تغییر میکند. برای مثال، وقتی ما یک دکمه را غیر فعال میکنیم (خاصیت IsEnabled آنرا برابر False قرار میدهیم)، رنگ و ظاهر آن تغییر میکند:
وقتی که یک کنترل غیر فعال است، هیچ فوکوس و رویدادی را قبول نمیکند. برای مثال، اگر یک دکمه غیر فعال باشد، شما نمیتوانید بر روی آن کلیک کنید.
رویدادهای کنترل
در جدول پایین شما برخی از رویدادهای مفید که بین بیشتر کنترلهای رایج هستند را مشاهده میکنید.
رویداد | توضیح |
ContextMenuClosing | زمانی اتفاق می افتد که کنترل Context Menu نمایش داده شده بر روی کنترل مورد نظر ما بسته شود. |
ContextMenuOpening | زمانی اتفاق می افتد که کنترل Context Menu نمایش داده شده بر روی کنترل مورد نظر ما باز شود. |
DataContextChanged | زمانی اتفاق می افتد که DataContext کنترل ما تغییر کند. |
DragEnter | زمانی اتفاق می افتد که یک شیء به داخل محیط کنترل ما کشیده شود. |
DragLeave | زمانی اتفاق می افتد که یک شیء از محیط کنترل ما به بیرون کشیده شود. |
DragOver | زمانی اتفاق می افتد که یک شیء در محیط کنترل ما کشیده شود. |
Drop | زمانی اتفاق می افتد که یک شیء داخل محیط کنترل ما رها شود. |
FocusableChanged | زمانی اتفاق می افتد که مقدار خاصیت Focusable تغییر کند. |
GotFocus | زمانی اتفاق می افتد که بر روی عنصر ما فوکوس شود. |
Initialized | زمانی اتفاق می افتد که FrameworkElement مقداردهی اولیه شود. همچنین زمانی که این رویداد اتفاق می افتد، به صورت همزمان مقدار خاصیت IsInitialized هم از false به true تغییر میکند. |
IsEnabledChanged | زمانی اتفاق می افتد که مقدار خاصیت IsEnabled تغییر کند. |
IsVisibleChanged | زمانی اتفاق می افتد که مقدار خاصیت IsVisible تغییر کند. |
KeyDown | زمانی اتفاق می افتد که یکی از کلیدهای کیبورد در حالی که بر روی کنترل مورد نظر ما فوکوس شده است، فشرده شود. |
KeyUp | زمانی اتفاق می افتد که یکی از کلیدهای کیبورد در حالی که بر روی کنترل مورد نظر ما فوکوس شده است، رها شود. |
Loaded | زمانی اتفاق می افتد که کنترل مورد نظر ما نمایش داده شده باشد. |
LostFocus | زمانی اتفاق می افتد که فوکوس از روی عنصر مورد نظر ما برداشته شود. |
MouseDoubleClick | زمانی اتفاق می افتد که یکی از دکمههای ماوس دوبار یا بیشتر کلیک شود. |
MouseDown | زمانی اتفاق می افتد که یکی از دکمههای ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، فشرده شود. |
MouseEnter | زمانی اتفاق می افتد که کرسر ماوس وارد محیط کنترل مورد نظر ما شود. |
MouseLeave | زمانی اتفاق می افتد که کرسر ماوس از محیط کنترل مورد نظر ما خارج شود. |
MouseLeftButtonDown | زمانی اتفاق می افتد که دکمه چپ ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، فشرده شود. |
MouseLeftButtonUp | زمانی اتفاق می افتد که دکمه چپ ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، رها شود. |
MouseMove | زمانی اتفاق می افتد که کرسر ماوس درحالی که بر روی کنترل مورد نظر ما قرار دارد حرکت کند. |
MouseRightButtonDown | زمانی اتفاق می افتد که دکمه راست ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، فشرده شود. |
MouseRightButtonUp | زمانی اتفاق می افتد که دکمه راست ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، رها شود. |
MouseUp | زمانی اتفاق می افتد که یکی از دکمههای ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد، رها شود. |
MouseWheel | زمانی اتفاق می افتد که غلطک ماوس در حالی که کرسر بر روی کنترل مورد نظر ما قرار دارد حرکت داده شود. |
QueryContinueDrag | زمانی اتفاق می افتد که تغییری در وضعیت دکمه ماوس یا کیبورد در حین عملیات کشیدن و رها کردن، رخ دهد. |
QueryCursor | این رویداد زمانی اتفاق می افتد که مکان کرسر ماوس تغییر کند. |
SizeChanged | زمانی اتفاق می افتد که مقدار خاصیت ActualWidth یا ActualHeight تغییر کند. |
SourceUpdated | زمانی اتفاق می افتد که مقدار یک خاصیت منبع در اتصال دادهها تغییر کند. |
TargetUpdated | زمانی اتفاق می افتد که مقدار یک خاصیت مقصد در اتصال دادهها تغییر کند. |
TextInput | زمانی اتفاق می افتد یک کاراکتر تایپ شود. این کاراکتر میتواند نتیجه فشردن چندین کلید کیبورد باشد. برای مثال زمانی که کلید ALT را نگه دارید و عدد 789 را (در NumPad) تایپ کنید کاراکتر § را برای شما نمایش میدهد. در اینجا چهار رویداد KeyDown و یک رویداد TextInput اتفاق می افتد. به عبارت دیگر رویداد KeyDown هر زمان که یک کلید فشرده شود اتفاق می افتد ولی TextInput فقط زمانی اتفاق می افتد که فشردن کلیدها به اتمام رسیده باشد |
ToolTipClosing | قبل از بسته شدن ToolTip نمایش داده شده بر روی کنترل مورد نظر ما اتفاق می افتد. |
ToolTipOpening | زمانی که ToolTip بر روی کنترل نمایش داده میشود اتفاق می افتد. |
TouchDown | زمانی که صفحه نمایش را در حالی که انگشتمان بر روی کنترل مورد نظر است لمس کنیم، این رویداد اتفاق می افتد. |
TouchEnter | زمانی که انگشتمان را بر روی صفحه نمایش از بیرون به داخل محیط کنترل مورد نظر حرکت دهیم این رویداد اتفاق می افتد. |
TouchLeave | زمانی که انگشتمان را بر روی صفحه نمایش از داخل به بیرون محیط کنترل مورد نظر حرکت دهیم این رویداد اتفاق می افتد. |
TouchMove | زمانی که انگشتمان را بر روی صفحه نمایش در محیط کنترل مورد نظرحرکت دهیم این رویداد اتفاق می افتد. |
TouchUp | زمانی که انگشتمان را در حالی که بر روی کنترل مورد نظر است برداریم، این رویداد اتفاق می افتد. |
Unloaded | زمانی اتفاق می افتد که یک عنصر را از درخت عناصر بارگذاری شده حذف کنیم. |
در مورد بیشتر رویدادهای بالا در بخشهای آینده صحبت خواهیم کرد..