PDA

View Full Version : تغییر دادن این کد



programerinfonet
سه شنبه 28 شهریور 1391, 20:20 عصر
سلام دوستان من می خوام وقتی همه ی تکست باکس های فرمم پر بودن دکمه ی ثبت فعال بشه و اگر حتی یکیش خالی بود دکمه غیر فعال باشه
از این کد استفاده کردم اما بلعکس جواب داد یعنی اگه یکیش هم پر بود دکمه فعال بشه
حالا چی کار کنم

foreach (Control ctl in this.Controls)
{
//Control ctl = new Control();
if (ctl is TextBox)
{
TextBox tmp;
tmp = (TextBox)ctl;
if (tmp.Text == "")
{
button1.Enabled = false;
}
else
{
button1.Enabled = true;

}
}
}

لطفأ کمکم کنید خیلی فوریه
مرسی

programerinfonet
سه شنبه 28 شهریور 1391, 20:40 عصر
کمک کنید دوستان
خواهش می کنم

m0hammad_01
سه شنبه 28 شهریور 1391, 21:05 عصر
سلام
برای هر تکست باکس یه فلگ تعریف کن که اگه 0 بود یعنی خالی اگه 1 بود یعنی پر.پیش فرض فلگ ها رو هم بزار 0.یه تابع بنویس که توش بیاد برای تمام تکست باکسها فلگش رو چک کنه که اگه خالی نبودن، دکمه ثبت رو فعال کنه وگرنه غیر فعالش کنه.
حالا بیا برای هر تکست باکس تو رویداد TextChanged ش شرط خالی بودن رو بررسی کن،IF پر بود فلگ تکست باکس مربوطه رو 1 کنه و تابع بالا رو فراخوانی کن و ELSE بیاد فلگ تکست باکس مربوطه رو 0 کن و تابع بالا رو فراوخوانی کن.
توجه: این راه حل ساده است اما بهینه نیست.ممکنه راه حلهای بهتری هم باشه.

ali_habibi1384
سه شنبه 28 شهریور 1391, 21:21 عصر
اين تابع:
private bool IsFull()
{
foreach (Control ctl in this.Controls)
{
if (ctl is TextBox)
{
TextBox tmp;
tmp = (TextBox)ctl;
if (tmp.Text == "") return false;
}

}return true;
}
اينم رويداد وس مو:
private void frmMain_MouseMove(object sender, MouseEventArgs e)
{
botten1.Enabled = IsFull();
}
تستش كردم درست بود

Saman_12
سه شنبه 28 شهریور 1391, 21:22 عصر
همین کد رو به صورت یک تابع در بیارید و اگر هر کدوم خالی بود مقدار false بر گردونید و همچنین میتونید یه مقدار بولین تعریف کنید با مقدار اولیه true و مثل تابع اگر یکی خالی بود بهش false بدین و مقدارش به enabled دکمه اختصاص بدید.

programerinfonet
سه شنبه 28 شهریور 1391, 22:00 عصر
شما به این سورس نگاه کنید
کار نمی کنه دیگه چی کار کنم

programerinfonet
سه شنبه 28 شهریور 1391, 22:37 عصر
کمک
کد رو دانلود کنید ببینید
چرا عمل نمی کنه
؟؟؟؟؟؟؟

Mahmoud.Afrad
سه شنبه 28 شهریور 1391, 23:02 عصر
به اینصورت بنویس
public Form1()
{
InitializeComponent();

button1.Enabled = false;
foreach (Control c in this.tabPage1.Controls)
{
if (c is TextBox)
{
TextBox txt = c as TextBox;
txt.TextChanged += new EventHandler(txt_TextChanged);
}
}
}
private void txt_TextChanged(object sender, EventArgs e)
{
button1.Enabled = IsFull(this.tabPage1);
}
private bool IsFull(Control container)
{
foreach (Control ctl in container.Controls)
{
if (ctl is TextBox)
{
TextBox tmp;
tmp = (TextBox)ctl;
if (tmp.Text == "") return false;
}

}
return true;
}

ali_habibi1384
چهارشنبه 29 شهریور 1391, 07:58 صبح
شما به این سورس نگاه کنید
کار نمی کنه دیگه چی کار کنم
بايد هم عمل نكنه چون من گفتم كه در محتويات كلاس جاري بگرد و در اينجا كلاس جاري شما كنترل Tab هست اما شما Form رو داري ميگردي!
فكر ميكنم با كد آقاي mafaman درست بشه اگر نشد بگو يه تابع بازگشتي بهت بدم كه اگر 100 تا تب پيج هم بذاري بازم كار كنه