PDA

View Full Version : سوال: چک کردن همزمان در دستور IF از تکست باکس 1 تا n



mehrdad1991h
پنج شنبه 15 فروردین 1392, 23:18 عصر
سلام
یه سوال خیلی واضح دارم
ببینید این کد را

if (Al[i].IndexOf(txt25.Text) == -1)

این کد را من میخوام دقیقا برای 25 تا تکست باکس چک کنمش
یعنی اینجوری

if (Al[i].IndexOf(txt1.Text) == -1 && ........ && Al[i].IndexOf(txt25.Text) == -1)

این وسط من && ........ && را زدم یعنی از 1 تا 25 رفته

(منظورم از کد بالا اینه که متن موجود در AL ایا در قسمتی از تکست باکس 1 و 2 و ...25 نیست ، خوب کار من را انجام بده)

حالا میخوام ببینم من چی کار کنم که همه اینا را با هم چک کنم
تو برنامه ام خیلی باید اینجوری بنویسم خواستم بدونم یه جورایی استاندارد ترین روش یا به عبارتی بهترین روش چیه همینه که من مینویسم یا جور دیگه ای
میشه نوع های دیگه را هم برای همین قسمت مثال بزنید اگر ممکنه

سپاس و تشکر

amin.m1993
پنج شنبه 15 فروردین 1392, 23:41 عصر
حالا میخوام ببینم من چی کار کنم که همه اینا را با هم چک کنم
تو برنامه ام خیلی باید اینجوری بنویسم خواستم بدونم یه جورایی استاندارد ترین روش یا به عبارتی بهترین روش چیه همینه که من مینویسم یا جور دیگه ای

سپاس و تشکر

سلام دوست عزیز
نظر من اینه که اول از همه txtbox ها رو یه آرایه بگیر اما از اونجایی که نمیشه به صورت معمولی آرایه ای از تکست باکس بگیری باید از Linq کمک بگیریم به این صورت :
TextBox[] txtbox;
int count=25; //tedade textbox
txtbox = Enumerable.Range(1, count).Select(i => new TextBox()
{

Name = "txt" + i,
Location = new System.Drawing.Point(575-i*30, 65)
}).ToArray();
بعدش هم یه foreach میزاری همه رو بررسی میکنی یعنی هرجا لازم بود اون if رو بزاری این متد رو صدا کن

bool method()
{
foreach(TextBox txt in txtbox)
{
if(Al[i].IndexOf(txt.Text) != -1)
return false;
}
return true;
}

linux
جمعه 16 فروردین 1392, 00:14 صبح
سلام
یه سوال خیلی واضح دارم
ببینید این کد را

if (Al[i].IndexOf(txt25.Text) == -1)

این کد را من میخوام دقیقا برای 25 تا تکست باکس چک کنمش
یعنی اینجوری

if (Al[i].IndexOf(txt1.Text) == -1 && ........ && Al[i].IndexOf(txt25.Text) == -1)

این وسط من && ........ && را زدم یعنی از 1 تا 25 رفته

(منظورم از کد بالا اینه که متن موجود در AL ایا در قسمتی از تکست باکس 1 و 2 و ...25 نیست ، خوب کار من را انجام بده)

حالا میخوام ببینم من چی کار کنم که همه اینا را با هم چک کنم
تو برنامه ام خیلی باید اینجوری بنویسم خواستم بدونم یه جورایی استاندارد ترین روش یا به عبارتی بهترین روش چیه همینه که من مینویسم یا جور دیگه ای
میشه نوع های دیگه را هم برای همین قسمت مثال بزنید اگر ممکنه

سپاس و تشکر
میشه بگی می‌خواستی چکار کنی که به این کد رسیدی؟!

erfan_urchin
جمعه 16 فروردین 1392, 01:55 صبح
سلام
یه سوال خیلی واضح دارم
ببینید این کد را

if (Al[i].IndexOf(txt25.Text) == -1)

این کد را من میخوام دقیقا برای 25 تا تکست باکس چک کنمش
یعنی اینجوری

if (Al[i].IndexOf(txt1.Text) == -1 && ........ && Al[i].IndexOf(txt25.Text) == -1)

این وسط من && ........ && را زدم یعنی از 1 تا 25 رفته

(منظورم از کد بالا اینه که متن موجود در AL ایا در قسمتی از تکست باکس 1 و 2 و ...25 نیست ، خوب کار من را انجام بده)

حالا میخوام ببینم من چی کار کنم که همه اینا را با هم چک کنم
تو برنامه ام خیلی باید اینجوری بنویسم خواستم بدونم یه جورایی استاندارد ترین روش یا به عبارتی بهترین روش چیه همینه که من مینویسم یا جور دیگه ای
میشه نوع های دیگه را هم برای همین قسمت مثال بزنید اگر ممکنه

سپاس و تشکر

دوست عزیز به راحتی میتونی با پراپرتی Controls این کارو بکنی. به کد زیر دقت کنید
for (int i = 1; i <= 25; i++)
if (Controls["txt" + i].Text == (-1).ToString())
{
// دستورات مورد نظر
}

Mahmoud.Afrad
جمعه 16 فروردین 1392, 02:01 صبح
...

if (Al[i].IndexOf(txt1.Text) == -1 && ........ && Al[i].IndexOf(txt25.Text) == -1)

(منظورم از کد بالا اینه که متن موجود در AL ایا در قسمتی از تکست باکس 1 و 2 و ...25 نیست ، خوب کار من را انجام بده)

1- Al جزئی از متن تکست باکسها نباشه یا 2- متن تکست باکسها جزئی از Al نباشه. کدوم یکی؟
کدی که نوشتی مربوط به شماره دو هست نه شماره یک. اگر میخوای شماره یک رو پیاده کنی باید جای Al و تکست باکس ها رو عوض کنی.

همه تکست باکس هایی که توی شرط هستند را داخل یک پنل بزار و به صورت زیر عمل کن:
Al جزئی از متن تکست باکسها نباشه:

bool found = false;
foreach (Control c in this.panel1.Controls)
{
if (c is TextBox)
{
TextBox txtBox = c as TextBox;
if (txtBox.Text.Contains(Al[i]))
{
found = true;
break;
}
}
}
if (!found)
{
MessageBox.Show("not found");
}
/* OR
bool found = this.panel1.Controls.OfType<TextBox>().Any(txtBox => txtBox.Text.Contains(Al[i]));
if (!found)
{
MessageBox.Show("not found");
}
*/


اگر هم میخواهی متن تکست باکسها جزئی از Al نباشه :

bool found = false;
foreach (Control c in this.panel1.Controls)
{
if (c is TextBox)
{
TextBox txtBox = c as TextBox;
if (Al[i].Contains(txtBox.Text))
{
found = true;
break;
}
}
}
if (!found)
{
MessageBox.Show("not found");
}
/* OR
bool found = this.panel1.Controls.OfType<TextBox>().Any(txtBox => Al[i].Contains(txtBox.Text));
if (!found)
{
MessageBox.Show("not found");
}
*/

mehrdad1991h
جمعه 16 فروردین 1392, 12:35 عصر
منظور من همون مورد دوم بود یعنی
متن تکست باکسها جزئی از Al نباشه

حالا فقط یه سوال
این "Contains" چه کاری انجام میدهد ؟
عمل جستجو را انجام میده و به حروف کوچک و بزرگ هم توجهی نمیکنه درسته ؟
پس با این حساب کد قبلی من که از indexof برای جستجو استفاده میکردم اشتباه است به نوعی چون به حروف کوچک و بزرگ توجه میکنه !!!
اگه گفته های من درسته لطفا یه تایید بکنید !

ممنون از کمک همگی خیلی لطف کردید
سپاس