PDA

View Full Version : سوال: تیک خوردن و غیرفعال سازی اتومات checkbox



esmael_g
دوشنبه 05 اسفند 1398, 10:29 صبح
سلام و درود
یک سوال سه تا چک باکس دارم تو برنامه چجوری میشه وقتی که اولین چک باکس تیک خورد ( دو تایی دیگه غیر فعال شن )
یعنی فقط با تیک خوردن چک باکس ( تو این قسمت نباید رو هیچ دکمه ای کلیک کنیم )‌

اومدم تو فورم لود به شرط گذاشتم که اگر چک باکس اول فعال شد دومی و سومی غیر فعال اما نشد

تو رویداد چک چنج هم همین کارو کردم بازم نشد تو نت هم گشتم اما همین حالت عادی رو توضیح میده راهی هست لطفا کمک کنید

the king
دوشنبه 05 اسفند 1398, 11:02 صبح
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctl in checkBox1.Parent.Controls)
{
if (ctl is CheckBox)
{
((CheckBox)ctl).CheckedChanged += checkedChanged;
}
}
}

private void checkedChanged(object sender, EventArgs e)
{
var chk = (CheckBox)sender;
foreach (Control ctl in chk.Parent.Controls)
{
if ((ctl != chk) && (ctl is CheckBox))
{
ctl.Enabled = (chk.Checked == false);
}
}
}

esmael_g
دوشنبه 05 اسفند 1398, 21:35 عصر
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctl in checkBox1.Parent.Controls)
{
if (ctl is CheckBox)
{
((CheckBox)ctl).CheckedChanged += checkedChanged;
}
}
}

private void checkedChanged(object sender, EventArgs e)
{
var chk = (CheckBox)sender;
foreach (Control ctl in chk.Parent.Controls)
{
if ((ctl != chk) && (ctl is CheckBox))
{
ctl.Enabled = (chk.Checked == false);
}
}
}

ممنون اما یک مشکل هست ببینید من 4 تا چک باکس دارم که هر دوتا باید از هم متفاوت باشن
یعنی وقتی چک باکس اول فعال شد دومی غیر فعال
ولی سومی و چهارمی نباید غیر فعال بشن

وقتی رو سومی زدم چهارمی غیر فعال
خلاصه

این جوری در نظر بگیر 2 گروه چک باکس هر گروه 2 تا داخلشون هست که گروه یک با دوم به هم ارتباط نداشته باشن کد بالا کل چک باکس ها رو غیر فعال می کنه

حل شد ::
برای حل مشکل اومدم بجایی فورم لود از panel استفاده کردم تو برنامه هر چک باکس رو تو پنل گذاشتم و کد قسمت فورم لود رو اونجا نوشتم خلاصه این شکلی حل شد تشکر و ممنون بابت راهنمایی

mmbguide
پنج شنبه 08 اسفند 1398, 10:27 صبح
سلام

چرا از Radio Button استفاده نمیکنید؟

esmael_g
سه شنبه 13 اسفند 1398, 22:04 عصر
سلام

چرا از Radio Button استفاده نمیکنید؟

سلام
اول برای ظاهر
دوم راستش دوتا نیستن چهار تا چک باکس هست پس زیاد فرق نداره

البته با کد دوستمون در بالا مشکل حل شده

ASHKANLAEI
چهارشنبه 14 اسفند 1398, 07:26 صبح
به نظرم راه مناسب و استانداردش اینه که یک کلاس از روی ریدیوباتن بسازین و ظاهرش رو تغییر بدین.
و همچنین برای رفتار دوتا با دوتا شون هم باید از groupbox استفاده کنید.
این روش به هیچ کدی برای غیر فعال کردن نیاز نداره چون کار اصلی radiobutton ها همین هست.