کنترل ها
کنترلها اجزای بصری هستند که به وسیلهی آنها محیطهای گرافیکی (GUI) ساخته میشود. هرچیزی که شما در یک محیط گرافیکی میبینید یک کنترل است، حتی محیط فرم نیز یک کنترل است. کنترلها در دستههای مختلفی در قسمت نوار ابزار قرار دارند. بیشتر کنترلها از کلاس پایه System.Windows.Forms.Control ارث بری میکنند که دارای خواص، متدها و رویدادهای متفاوتی برای آنها میباشد.
خواص کنترلها
در قسمت زیر بعضی از مشخصههای مفید کلاس Control را مشاهده میکنید.
خاصیت | توضیح | |
Anchor | این گزینه مشخص میکند که کنترلها وقتی که سایز فرم تغییر میکند چگونه محل و سایزشان تغییر کند. | |
AutoSize | وقتی که مقدار آن برابر با True باشد، سایز کنترل به صورت اتوماتیک براساس محتوای آن تغییر میکند. | |
BackColor | رنگ قسمت زمینهی کنترل را مشخص میکند. | |
BackgroundImage | به شما اجازه میدهد که یک عکس به زمینهی کنترل خود اضافه کنید. | |
BackgroundImageLayout | حالت عکس زمینهی کنترل را مشخص میکند. | |
ContextMenuStrip | به شما اجازه میدهد که یک توضیح را به کنترل خود در مورد آن اضافه کنید. | |
Controls | مجموعهای از کنترلهای مرتبط با کنترل مربوطه را نشان میدهد. | |
Dock | کنترل را به یکی از لبههای پنجره میچسباند. | |
Enabled | این قسمت مشخص میکند که کنترل فعال است یا نه. اگر مقدار آن False باشد کنترل غیرفعال میشود. | |
ForeColor | رنگ پیش زمینهی کنترل و همچنین رنگ قلم کنترل را مشخص میکند. | |
Height | طول کنترل را بر مبنای پیکسل مشخص میکند. | |
Location | محل کنترل بر اساس در بر دارندهی آن را مشخص میکند. | |
Locked | مشخص میکند که کنترل در حالت Design میتواند جابجا شود و یا تغییر سایز دهد یا نه. | |
MaximumSize | حداکثر اندازهای که کنترل میتواند داشته باشد را مشخص میکند. | |
Margin | فاصلهی بین لبههای کنترل مربوطه و لبهی کنترل دیگر را مشخص میکند. | |
MinimumSize | کمترین سایز کنترل را مشخص میکند. | |
Name | نام کنترل را مشخص میکند. این نام برای اشاره به کنترل در زمان کد نویسی استفاده میشود. | |
Parent | والد کنترل را مشخص میکند. | |
Right | فاصلهی بین ضلع راست کنترل و ضلع چپ در بردارنده ی آن را مشخص میکند. | |
Size | سایز کنترل را مشخص میکند. این بخش شامل طول و عرض کنترل است. | |
TabIndex | با اختصاص یک عدد یه این خاصیت مشخص میکنیم که با چند بار زدن دکمه Tab، کنترل فوکوس بگیرد. | |
TabStop | مشخص میکند که یک کنترل میتواند توسط دکمهی Tab مورد دستیابی قرار گیرد یا خیر. | |
Text | متنی که در داخل کنترل قرار میگیرد. | |
TextAlign | نحوهی قرار گیری متن در داخل کنترل را مشخص میکند. | |
Top | فاصلهی بین ضلع بالایی کنترل و ضلع بالایی در بر دارندهی آن را مشخص میکند. | |
Visible | نمایان بودن و نمایان نبودن کنترل را مشخص میکند. | |
Width | عرض کنترل براساس پیکسل را مشخص میکند. |
مهمترین خاصیت در جدول بالا خاصیت Name است. این مشخصه به شما اجازه میدهد که از آن نام برای ارجاع به کنترل در قسمت کد نویسی استفاده کنید. در این قسمت به بحث در مورد بعضی از مشخصههایی که در بیشتر کنترلها وجود دارند میپردازیم.
تغییر رنگ زمینهی کنترل
ما از مشخصهی BackColor کنترل برای تغییر رنگ زمینهی آن استفاده میکنیم. مشخصهی BackColor را در پنجرهی Properties پیدا کنید و بر روی نوار کرکرهای کنار آن کلیک کنید. شما یک پنجره با سه سربرگ مشاهده میکنید. هر سربرگ حاوی رنگهای مختلفی است.
سربرگ System شامل رنگهایی است که سیستم عامل به طور پیش فرض برای رنگ آمیزی کنترلها از آنها استفاده میکند.
سربرگ Web شامل رنگهایی است که برای استفاده در صفحات وب مناسب هستند.
سربرگ Custom شامل رنگهای بسیار زیادی است. در این سر برگ شما میتوانید مقادیر RGB آن را در نوارها مربوطه وارد کنید.
اضافه کردن یک عکس به زمینهی کنترل
شما میتوانید عکس زمینهی یک کنترل را به وسیلهی مشخصهی BackgroundImage تغییر دهید. به عنوان مثال ما میخواهیم عکس زمینهی یک فرم را تغییر دهیم. برای اینکار ابتدا فرم را انتخاب کرده و سپس به پنجرهی Properties رفته و مشخصهی BackgroundImage را انتخاب میکنیم.
در این قسمت پنجرهای به ما نمایش داده میشود که به ما اجازه میدهد آدرس تصویر خود را مشخص کنیم. برای اینکار ابتدا قسمت Local resource را انتخاب کرده و سپس بر روی دکمهی Import کلیک میکنیم.
پس از اینکه عکس را انتخاب کردید دکمه Ok را برای تأیید بزنید. حالا تصویر مورد نظر ما بر روی فرم نمایش داده میشود. حالت قرار گیری و سایز تصویر ممکن است چیزی نباشد که شما انتظار داشتهاید. برای تغییر آن یک مشخصه به نام BackgroundImageLayout وجود دارد. این مشخصه مقادیری از نوع شمارشی System.Windows.Forms.ImageLayout را میپذیرد. این مقادیر به شرح زیر هستند:
مقدار | توضیح | |
None | عکس بر اساس قسمت بالای چپ خود در محل قرار میگیرد و هیچ تغییر سایزی در آن صورت نمیگیرد. | |
Tile | اگر عکس از محیط کنترل کوچکتر باشد، عکس به طور متناوب بر روی کنترل تکرار میشود. | |
Center | عکس در وسط کنترل قرار میگیرد. | |
Stretch | عکس در حد اندازه کنترل کوچک میشود و کل کنترل را در بر میگیرد. | |
Zoom | عکس در حد کنترل تغییر سایز میدهد بدون اینکه نسبت طول و عرض آن تغییر کند. |
در بیشتر مواقع Stretch به خوبی عمل میکند. در فرم پایین عکس پس زمینهی فرم در حالت Stretch قرار دارد.
خاصیت Text
خاصیت Text یک متن را در داخل کنترل تعریف میکند. متن خاصیت Text، در کنترلهای گوناگون نمایش مختلفی دارد. به عنوان مثال، متن خاصیت Text کنترل فرم در عنوان (Caption bar) آن قرار میگیرد. متن خاصیت Text یک دکمه، در داخل آن دکمه نمایش داده میشود. متن خاصیت Text یک تکست باکس، در داخل آن تکست باکس نمایش داده میشود:
خاصیت TextAlign
ما میتوانیم از خاصیت TextAlign برای تغییر مکان متن در داخل کنترل استفاده کنیم. اگر شما بر روی مشخصهی TextAlign کلیک کنید یک نوار کرکرهای را در پنجره Properties مشاهده میکنید، که به آسانی به شما اجازه میدهد که نحوهی قرار گیری متن خود را در داخل کنترل تنظیم کنید.
برای درک بهتر عملکرد این خاصیت یک دکمه بر روی فرم قرار داده و اندازه آن را کمی بزرگ کنید. حال بر روی قسمتهای مختلف خاصیت TextAlign کلیک کرده و تأثیر آن را بر نوشته داخل کنترل دکمه مشاهده کنید :
خاصیت Name
از خاصیت Name برای نامگذاری کنترلها استفاده میشود :
نامی که به کنترل اختصاص میدهیم در کد نویسی به درد ما میخورد. فرض کنید که یک دکمه قرار است عملیات ذخیره اطلاعات در دیتابیس را انجام دهد. برای این منظور خاصیت Name آن را به buttonSave تغییر میدهیم تا در محیط کدنویسی آن را راحتتر شناسایی کنیم :
حال اگر بر روی آن دوبار کلیک کنید، مشاهده میکنید که نام دکمه همان نامی است که در خاصیت Name به آن اختصاص دادهایم :
و اگر در محیط کدنویسی به دنبال آن بگردیم، پیدا کردن این کنترل بسیار راحت است :
شاید در مورد یک یا چند مورد کنترل، نامگذاری زیاد کارا نباشد ولی وقتی که تعداد کنترلها زیاد میشود بهتر است که همه آنها را نامگذاری کنید تا در موقع کدنویسی گیج نشوید.
تغییر قلم متن یک کنترل
ما میتوانیم نوع قلم، رنگ، سایز، و حالت قلم یک کنترل را به وسیلهی خواص Fore Color و Font تغییر دهیم. برای مثال ما یک دکمه را ایجاد میکنیم.
برای تغییر نوع قلم این کنترل ابتدا میبایست خاصیت Font را در پنجرهی Properties پیدا کنیم. سپس در سمت چپ این خاصیت یک علامت فلش را مشاهده میکنیم. بر روی آن کلیک کرده تا تمامی زیر مجموعههای آنرا مشاهده کنیم.
قسمت Name که نوع قلم را تعریف میکند قسمت Size اندازهی قلم را مشخص میکند قسمت Bold برای ضخیم کردن متن و قسمتهای Italic و Strikeout برای کشیدن خط زیر متن کنترل به کار میروند. همچنین، شما میتوانید از دکمهای سمت راست خاصیت Font برای باز کردن پنجرهی فونت استفاده کنید.
در اینجا شما میتوانید نوع قلم، حالت و سایز آنرا به طور دقیق انتخاب کنید. همچنین در این پنجره شما میتوانید یک پیش نمایش از نوع قلم خود را مشاهده کنید. به وسیلهی اینها شما میتوانید قلم کنترل خود را سفارشی کنید.
فعال کردن و غیر فعال کردن یک کنترل
میتوان از خاصیت Enabled برای فعال کردن یا غیر فعال کردن یک کنترل استفاده کنیم. از مقدار False برای غیر فعال کردن و نیز از مقدار True برای فعال کردن یک کنترل استفاده میشود. وقتی یک کنترل را غیر فعال میشود، ظاهر آن تغییر میکند. برای مثال، وقتی ما یک دکمه را غیر فعال میکنیم (خاصیت Enabled آنرا برابر False قرار میدهیم)، رنگ و ظاهر آن تغییر میکند. به این نکته توجه کنید که این تغییرات در هنگام اجرای برنامه قابل مشاهده هستند، نه در محیط طراحی.
وقتی که یک کنترل غیر فعال است، هیچ فوکوس و رویدادی را قبول نمیکند. برای مثال، اگر یک دکمه غیر فعال باشد، شما نمیتوانید بر روی آن کلیک کنید.
مخفی کردن یک کنترل
شما میتوانید یک کنترل را به وسیلهی مقدار دادن False به خاصیت Visible آن به طور موقت مخفی کنید.
خاصیت Visible یک خاصیت بولی است که دو حالت دارد:
1- کنترل قابل مشاهده است 2- کنترل قابل مشاهده نیست
مقدار False آن، کنترل را مخفی میکند و مقدار True کنترل را نمایش میدهد.
نکته: اثر این خاصیت فقط در هنگام اجرای برنامه قابل مشاهده است و در حالت طراح قابل مشاهده نیست !
شما حتی وقتی که مقدار این خاصیت را برابر False قرار بدهید میتوانید آنرا در حالت طراحی انتخاب کنید. در درسهای آینده به طور مفصل در مورد خواص و ویژگیهای کنترلها به بحث میپردازیم.
رویدادهای کنترل
در جدول پایین شما برخی از رویدادهای مفید که بین بیشتر کنترلهای رایج هستند را مشاهده میکنید.
رویداد | توضیح | |
BackColorChanged | وقتی که رنگ پس زمینه تغییر میکند این رویداد اتفاق می افتد. | |
BackgroundImageChanged | وقتی که یک تصویر پس زمینه اضافه میشود یا تغییر میکند این رویداد رخ میدهد. | |
Click | این رویداد وقتی رخ میدهد که بر روی کنترل با دکمهی سمت چپ ماوس کلیک شود. | |
DoubleClick | زمانی که شما بر روی یک کنترل دابل کلیک میکنید رخ میدهد. به این نکته توجه داشته باشید که این رویداد میتواند به وسیلهی دستوراتی که کاربر نوشته نیز رخ دهد مثل ترکیب دو کلید (کلید میانبر ) | |
DragDrop | زمانی که عملیات Drag & Drop بر روی کنترل انجام میشود این رویداد رخ میدهد. | |
EnabledChanged | زمانی که یک کنترل حالت Enable و یا Disable را را به خود میگیرد (به یکی از این دو حالت تغییر میکند) این رویداد رخ میدهد. | |
Enter | زمانی که مکان نما به کنترل وارد شود. (بر روی آن قرار گیرد) | |
FontChanged | زمانی که خاصیت font کنترل تغییر میکند این رویداد رخ میدهد. | |
ForeColorChanged | زمانی رخ میدهد که رنگ متن کنترل تغییر پیدا کند. | |
GotFocus | زمانی رخ میدهد که Focus روی کنترل قرار گیرد. | |
KeyDown | این رویداد زمانی رخ میدهد که focus بر روی کنترل باشد و کلیدی از صفحه کلید فشرده شود. | |
KeyPress | این رویداد زمانی رخ میدهد که focus بر روی کنترل باشد و کلیدی از روی صفحه کلید فشرده و رها شود. این رویداد قبل از رویداد Keydown رخ میدهد. | |
KeyUp | این رویداد زمانی رخ میدهد که focus بر روی کنترل باشد و کلیدی که از روی صفحه کلید فشرده شده، رها شود. این رویداد بعد از دو رویداد قبلی رخ میدهد. | |
Leave | این رویداد وقتی که مکان نما کنترل را ترک کند رخ میدهد. | |
LostFocus | وقتی که کنترل Focus خود را از دست بدهد این رویداد رخ میدهد. | |
MouseClick | یک حالت پیشرفتهتر از رویداد کلیک است. کلیک کردن میتواند شامل فشردن کلیدهای صفحهی کلید نیز باشد. ولی اگر شما نیاز به اطلاعاتی نظیر: تعداد کلیک بر روی کنترل، چرخیدن دکمه چرخندهی ماوس و … باشید باید از این رویداد استفاده کنید | |
MouseDoubleClick | یک حالت پیشرفتهتر از رویداد DoubleClick است . | |
MouseDown | این رویداد زمانی رخ میدهد که دکمهای از ماوس در داخل کنترل پایین نگه داشته شود. | |
MouseEnter | زمانی که مکان نما به یک کنترل وارد میشود این رویداد رخ میدهد. | |
MouseHover | این رویداد زمانی رخ میدهد که مکان نما روی یک کنترل منتظر بماند. (حالت مکان نما به Wait یا همان ساعت شنی تغییر یابد.) | |
MouseLeave | این رویداد زمانی رخ میدهد که مکان نما کنترل را ترک کند. | |
MouseMove | این رویداد زمانی رخ میدهد که مکان نما وقتی در داخل محدودهی کنترل است حرکت کند. | |
MouseUp | این رویداد زمانی رخ میدهد که دکمهای از ماوس را که قبلاً فشردهایم، در داخل کنترل رها کنیم. | |
MouseWheel | این رویداد زمانی رخ میدهد که بر روی کنترل Focus باشد و دکمه چرخنده ماوس حرکت کند. | |
Move | این رویداد زمانی رخ میدهد که کنترل حرکت کند. | |
Paint | این رویداد زمانی رخ میدهد که کنترلی رسم شود. | |
ParentChanged | این رویداد زمانی رخ میدهد که خاصیت Parent کنترل تغییر کند. | |
Resize | این ویداد زمانی رخ میدهد که کنترل تغییر سایز دهد. | |
TextChanged | وقتی که خاصیت Text کنترل تغییر پیدا کند این رویداد رخ میدهد. | |
Validated | وقتی رخ میدهد که اعتبار سنجی کنترل پایان یابد. | |
Validating | وقتی رخ میدهد که کنترل اعتبار سنجی میشود. | |
VisibleChanged | وقتی که خاصیت نمایش کنترل تغییر پیدا کند. |
در مورد بیشتر رویدادهای بالا در بخشهای آینده صحبت خواهیم کرد.
متدهای کنترل
متدهای زیر پرکابردترین متدهای کلاس کنترل هستند.
متدها | توضیح | |
CreateControl() | یک کنترل را ایجاد میکند و به کنترل جاری اضافه میکند. | |
FindForm() | فرمی را که کنترل بر روی آن قرار دارد را بازیابی میکند. | |
Focus() | Focus را بر روی کنترل جاری قرار میدهد. | |
Hide() | کنترل را مخفی میکند. | |
Refresh() | نوسازی کنترل را انجام میدهد. | |
Select() | کنترل را فعال (انتخاب) میکند. | |
Show() | کنترل مخفی شده را نمایش میدهد. | |
Update() | محتویات کنترل را به روز میکند. |
همچنین کلاس کنترل به شما متدهایی را عرضه میکند که به شما اجازه میدهند به صورت دستی رویدادهای کنترل را راه اندازی کنید. برخی از متدها با کلمهی On و سپس نام یک رویداد شروع میشوند. برای مثال، متد OnClick وقتی که رویداد Click فراخوانی میشود اتفاق می افتد.
خیلی خوب بود ممنون
عاللللللللللللللللللللللللللللللللللللللیییییییییییییییییییییییییییییییی بود
سلام خیلی ممنون از مطالب خوب و مفیدتون
ببخشید سطر اخر نوشتین برخی از متدها با کلمه on و سپس نام یک رویداد شروع میشوند مثل رویداد onclick
منظور متد onclick دیگه نه؟
بله، ممنون بابت توجهتون… اصلاح شد