کنترل CheckBox

کنترل CheckBox یک دکمه است و به شکل یک جعبه‌ی خالی به همراه یک برچسب در کنار آن نمایش داده می‌شود. در حالت عادی، زمانی که بر روی جعبه‌ی خالی کلیک شود، یک تیک در داخل جعبه نمایان می‌شود که به ما می‌گوید کنترل CheckBox در حالت Checked قرار دارد. برخلاف دکمه‌ی Radio که فقط اجازه‌ی انتخاب یکی از Radio های فرم را به ما می‌داد، شما می‌توانید چند عدد CheckBox و یا همه‌ی آنها را تیک بزنید. CheckBox نیز خواصی را شبیه به خواص Radio در خود جای داده است. خواص زیر منحصراً مربوط به کنترل CheckBox هستند.

خاصیت توضیح
Checked وقتی که CheckBox تیک خورده باشد مقدار آن True می‌شود.
CheckState مشخص می‌کند که CheckBox آیا تیک خورده است یا خیر.
ThreeState وقتی مقدار آن برابر با True باشد. CheckBox یک حالت دیگری را به نام InterMediate را قبول می‌کند.

بر خلاف دکمه‌ی Radio، کنترل CheckBox می‌تواند با دادن مقدار True به خاصیت ThreeState سه حالت داشته باشند. آن حالات Checked ،Unchecked و Intermediate هستند. حالت میانی (Intermediate) نشان می‌دهد که checkbox بی اعتبار یا غیر قابل تشخیص است. تصویر زیر شکل این سه حالت مختلف را نشان می‌دهد.
check-box-12-20-10-01
شما با استفاده از خاصیت CheckState می‌توانید حالت این کنترل را در قسمت کد نویسی تعیین کنید. CheckState مقادیری از نوع شمارشی قبول می‌کند.

checkBox1.CheckState = CheckState.Checked;
checkBox2.CheckState = CheckState.Unchecked;
checkBox3.CheckState = CheckState.Intermediate;

اگر Checkbox فقط دو حالت On یا Off ( تیک خورده و تیک نخورده) را قبول کند، آنگاه شما به سادگی می‌توانید از خاصیت Checked آن که دو مقدار True به معنی اینکه Checkbox تیک خورده و False به معنی اینکه CheckBox تیک نخورده است را قبول می‌کند استفاده کنید. رویداد پیشفرض کنترل CheckBox، رویداد CheckChanged است. اما تفاوت بسیار کمی بین رویداد CheckChanged کنترل CheckBox و RadioButton وجود دارد. برای مثال اگر مقدار خاصیت ThreeState کنترل Checkbox را True قرار دهید، وقتی CheckBox حالتش را از Checked به InterMediate تغییر دهد، رویداد CheckChanged آن اتفاق نمی‌افتد. اگر می‌خواهید زمانی که CheckBox از Checked به Intermediate تغییر حالت می‌دهد یک رویداد اتفاق بی افتد، می‌توانید از رویداد CheckStateChanged به جای CheckChanged استفاده کنید. در مثال زیر نحوه‌ی کاربرد کنترل CheckBox را مشاهده می‌کنید. یک فرم را ساخته و یک Lable به آن اضافه کنید، سپس سه عدد CheckBox و نیز یک Button به آن اضافه کنید. متن کنترل‌ها و نحوه‌ی چینش آنها را مطابق تصویر قرار دهید.
check-box-12-20-10-02
خاصیت Name، چک باکس‌ها را به checkBoxSoap ،checkBoxShampoo و checkBoxToothpaste تغییر دهید. مشخصه‌ی Name، دکمه را به buttonCheckOut تغییر دهید. نام کنترل label را لازم نیست که تغییر دهید چون در کدنویسی از آن استفاده نمی‌شود.

string items = String.Empty;

if (checkBoxSoap.Checked)
    items += "n Soap";
if (checkBoxShampoo.Checked)
    items += "n Shampoo";
if (checkBoxToothpaste.Checked)
    items += "n Toothpaste.";

MessageBox.Show("You have bought: " + items);

بر روی دکمه (Button ) دوبار کلیک کرده و کدهای زیر را در داخل کنترل کننده‌ی رویداد (Event Handler) کپی کنید. برنامه را اجرا کرده و برخی از CheckBox ها را تیک بزنید. وقتی که شما یک CheckBox را تیک می‌زنید، و سپس بر روی دکمه Check Out کلیک می‌کنید، آیتم‌هایی که قبلاً تیک زده‌اید در یک پنجره نمایش داده می‌شوند. به شکل زیر توجه کنید.
check-box-12-20-10-03check-box-12-20-10-04
در کد بالا، یک متغیر از نوع رشته‌ای تعریف کرده‌ایم و آنرا با یک رشته‌ی تهی مقدار دهی کرده‌ایم (با استفاده از خاصیت Empty از کلاس String). سپس ما چک می‌کنیم که کدام یک از چک باکس‌ها تیک خورده‌اند، هر کدام از آنها که تیک خورده‌اند نامشان به وسیله‌ی عملگر += در رشته‌ای که قبلاً به صورت تهی تعریف کرده‌ایم قرار می‌گیرد. سپس به وسیله‌ی یک پیغام (Message Box) نتایج را در خروجی نمایش می‌دهیم.