PDA

View Full Version : سوال: بررسی خالی بودن تمام جعبه های متن!!!



hadimtn
یک شنبه 28 تیر 1394, 21:31 عصر
سلام؛
فرم زیر رو در نظر بگیرید:

133398

میخوام وقتی کاربر هر کدوم از جعبه ها رو خالی گذاشت، PictureBox جلوش نمایش داده بشه!
الآن با این کدی که من نوشتم اول چک میکنم اگه همه ی جعبه ها خالی بود همه ی PictureBox ها رو فعال میکنم، بعد به ترتیب از اول همه رو چک میکنم...
که این کار باعث میشه اولین جعبه ی متن خالی نمایش داده بشه!

if (txt_Username.Text == "" & txt_Password.Text == "" & txt_RepeatPassword.Text == "" & txt_PasswordReminder.Text == "" & userPrivilage_ComboBox.Text == "")
{
// Alter_PictureBox1.Visible = true; Alter_PictureBox2.Visible = true; Alter_PictureBox3.Visible = true; Alter_PictureBox4.Visible = true; Alter_PictureBox5.Visible = true;
AlterViewer(this);
}
else if (txt_Username.Text == "")
Alter_PictureBox1.Visible = true;


else if (txt_Password.Text == "")
Alter_PictureBox2.Visible = true;


else if (txt_RepeatPassword.Text == "")
Alter_PictureBox3.Visible = true;


else if (txt_PasswordReminder.Text == "")
Alter_PictureBox4.Visible = true;


else if (userPrivilage_ComboBox.Text == "")
Alter_PictureBox5.Visible = true;


else if (txt_Password.Text.Length <= 6)
{
Msg.MsgBoxAraz("گذرواژه باید بیشتر از شش کاراکتر باشد", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txt_Password.Text = "";
txt_RepeatPassword.Text = "";
}
else
{

در واقع ساز و کاری نیاز دارم تا همه ی جعبه ها رو چک کنه هر کدوم خالی بود PictureBox جلوش فعال بشه!

بیتا حکمت
یک شنبه 28 تیر 1394, 23:09 عصر
سلام



string txt = null;
for (int i = 1; i <= 2; i++)
{
txt= Form1.ActiveForm.Controls["textBox" + i.ToString()].Text;
if(string.IsNullOrEmpty(txt))
Form1.ActiveForm.Controls["pictureBox" + i.ToString()].Visible = true;
else
Form1.ActiveForm.Controls["pictureBox" + i.ToString()].Visible = false;

ژیار رحیمی
یک شنبه 28 تیر 1394, 23:26 عصر
راه بهترشم استفاده از کنترل errorProvider هست

pbm_soy
دوشنبه 29 تیر 1394, 00:10 صبح
سلام



string txt = null;
for (int i = 1; i <= 2; i++)
{
txt= Form1.ActiveForm.Controls["textBox" + i.ToString()].Text;
if(string.IsNullOrEmpty(txt))
Form1.ActiveForm.Controls["pictureBox" + i.ToString()].Visible = true;
else
Form1.ActiveForm.Controls["pictureBox" + i.ToString()].Visible = false;





اگه اسم تکست باکسها چیز دیگری باشد چی؟
البته controls. یک آرایه است و میتوان با اندیس به آنها دسترسی داشت ولی همه کنترلها را میدهد نه تکست باکسها!

هرچند که احتمالا با یک شرط بشه نوع کنترلها را فیلتر کرد

بیتا حکمت
دوشنبه 29 تیر 1394, 00:32 صبح
اگه اسم تکست باکسها چیز دیگری باشد چی؟
البته controls. یک آرایه است و میتوان با اندیس به آنها دسترسی داشت ولی همه کنترلها را میدهد نه تکست باکسها!

اگه بخوان از این روش استفاده کنن باید اسم textBox ها رو طوری بنویسن که بشه با حلقه بهش دسترسی داشت ، یا اینکه در خاصیت تگ تکست باکس ها عددی قرار بدن که مشخص کنه این نوع کنترل از نوع تکست باکس هست ، مثلا خاصیت تگ همه باکس ها عدد یک باشه ، یا بهتر از همه اینها




foreach (Control control in this.Controls)
{
if (control is TextBox)

// نمایش نام صرفا" جهت توضیح به استارتر تاپیک هست
MessageBox.Show(control.Name);


}

hadimtn
دوشنبه 29 تیر 1394, 01:13 صبح
راه بهترشم استفاده از کنترل errorProvider هست
میشه برای این مثال توضیح بدین؟! تا حالا ازش استفاده نکردم!!!!

hadimtn
دوشنبه 29 تیر 1394, 01:14 صبح
اگه اسم تکست باکسها چیز دیگری باشد چی؟
البته controls. یک آرایه است و میتوان با اندیس به آنها دسترسی داشت ولی همه کنترلها را میدهد نه تکست باکسها!
اسم جعبه متن ها همگی عوض شدند...
هر کدوم با کاری که انجام میدن نام گذاری شدن... !!!

golbafan
دوشنبه 29 تیر 1394, 07:50 صبح
سلام:
در جهت تکمیل توضیحات خانم حکمت:


foreach (Control control in this.Controls)
{
if (control is TextBox)
if((textbox)control.text=="")
MessageBox.Show(control.Name+" is empty");
}

hadimtn
سه شنبه 30 تیر 1394, 03:29 صبح
ممنون از دوستان مشکلم حل شد....
این حلقه به چه شکل کار میکنه؟! آخه آخرین جعبه رو جلوتر از بقیه چک میکنه و بهمین ترتیب... یعنی از آخر پیام ها رو نشون میده!
اول پیام مربوط به جعبه ی سوم بعد دوم بعد اول ..... .!!!

hadimtn
چهارشنبه 31 تیر 1394, 02:59 صبح
دوستان من جواب نگرفتم!

133447

شرط else if رو چه جوری بنویسم؟!
الآن تو این عکس از ComboBox یه گزینه انتخاب میکنم، بعد دکمه ی اضافه کردن رو میزنم، حلقه‌ی foreach اصلا اجرا نمیشه!!!
کد:

if (txt_Username.Text == "" & txt_Password.Text == "" & txt_RepeatPassword.Text == "" & txt_PasswordReminder.Text == "" & userPrivilage_ComboBox.Text == "")
{
AlterViewer(this);
}
else if (txt_Username.Text == "" || txt_Password.Text == "" || txt_RepeatPassword.Text == "" || txt_PasswordReminder.Text == "" || userPrivilage_ComboBox.Text == "")
{
foreach(Control ctl in this.Controls)
{
if(ctl is TextBox)
if(ctl.Text == "")
MessageBox.Show(ctl.Name + "Is Alter Should Be True!");
}
}
else
{
// عملیات درج داده
}

ناامید
جمعه 02 مرداد 1394, 09:26 صبح
که این کار باعث میشه اولین جعبه ی متن خالی نمایش داده بشه!

به این دلیل است که از else if استفاده میکنید و زمانی که اولین شرط برقرار شد دستورات آن انجام شده و شرطهای دیگر بررسی نمیشود از if استفاده کنید.

ناامید
جمعه 02 مرداد 1394, 09:32 صبح
در واقع ساز و کاری نیاز دارم تا همه ی جعبه ها رو چک کنه هر کدوم خالی بود PictureBox جلوش فعال بشه!

این خط کدها را جایگزین کنید.

if (string.IsNullOrWhiteSpace(txt_Username.Text))
Alter_PictureBox1.Visible = true;

if (string.IsNullOrWhiteSpace(txt_Password.Text))
Alter_PictureBox2.Visible = true;

if (string.IsNullOrWhiteSpace(txt_RepeatPassword.Text ))
Alter_PictureBox3.Visible = true;

if (string.IsNullOrWhiteSpace(txt_PasswordReminder.Te xt))
Alter_PictureBox4.Visible = true;

if (string.IsNullOrWhiteSpace(userPrivilage_ComboBox. Text))
Alter_PictureBox5.Visible = true;

به جای عکس از errorprovider استفاده کنید picturebox باعث میشه فرم دیر load بشه.
در مورد errorprovider تو سایت یا google و ... جستجو کنید آموزشهای زیادی است.