PDA

View Full Version : خارج نشدن از حلقه



samiasoft
جمعه 26 خرداد 1396, 00:38 صبح
سلام دوستان

من میخواستم هر داده ای که در لیست باکس وارد میکنم قبلش چک کنم که آیا این داخل لیست باکس وجود داره یا نه.

برای اینکه چک کنم داده در لیست باکس وجود داره از دستور زیر استفاده کردم که ردیف متناظرش در لیست باکس دوم 2 برابر شود.


for (int r = 0; r <= listBox1.Items.Count - 1; r++) {


if (textBox1.Text == listBox1.Items[r].ToString())


{
//تکراری هست


int m = Convert.ToInt32(listBox2.Items[r]);


listBox2.Items[r] = m * 2;

return;



}


}

این دستور به درستی کار میکنه.

خب حالا من میخواستم برررسی کنم که اگر داده در لیست باکس نبود با مقدار 1 اضافه شود.برای همین دستور زیر رو نوشتم. ولی این دستور چند بار اون داده رو وارد میکنه. به نظرتون مشکل کجاست؟
for (int r = 0; r <= listBox1.Items.Count - 1; r++) {


if (textBox1.Text == listBox1.Items[r].ToString())


{
//تکراری هست


int m = Convert.ToInt32(listBox2.Items[r]);


listBox2.Items[r] = m * 2;

return;



}
else
{


//تکراری نیست
listBox1.Items.Add(textBox1.Text);
listBox2.Items.Add("1");
return;
}

}

_behnam_
جمعه 26 خرداد 1396, 02:00 صبح
سلام.
من کدتون رو چک کردم یک بار وارد میکرد.

samiasoft
جمعه 26 خرداد 1396, 05:08 صبح
سلام.
من کدتون رو چک کردم یک بار وارد میکرد.

درود

خب برای مثال شما اسم میلاد رو وارد کن...بعد دوباره روی باتن کلیک کن....میبنی که به جای اینکه مقدارشو 2 برابر کنه دوباره میلاد رو اضافه میکنه!!!! من نمیخوام اینطوری بشه.


من اومدم اینطور نوشتم...الان درست شده دستوراتم و به اون چیزی که میخواستم رسیدم...ولی به نظرتون جور دیگری هم میشد اینو نوشت؟

string vaz ="";

for (int r = 0; r <= listBox1.Items.Count - 1; r++)
{
if (textBox1.Text == listBox1.Items[r].ToString())
{
int m = Convert.ToInt32(listBox2.Items[r]);
listBox2.Items[r] = m * 2;


//تکراری هست
vaz = "yes";
}
}


//تکراری نیست
if (vaz=="")


{
listBox1.Items.Add(textBox1.Text);
listBox2.Items.Add("1");
}

_behnam_
جمعه 26 خرداد 1396, 06:26 صبح
روش های متفاوتی هست.
کدخودتون هم خوبه اما به شرطی که نوع vaz به bool تغییر پیداکنه
این روش هم میشه

for(int i=0;i<= listBox1.Items.Count - 1;i++)
{
if(textBox1.Text==listBox1.Items[i].ToString())
{

int m= Convert.ToInt32(listBox2.Items[i].ToString());
listBox2.Items[i] = m * 2;
return;
}
}
listBox1.Items.Add(textBox1.Text);
listBox2.Items.Add("1");


دوست دارم یه راهنمایی کنم در مورد کدنویسی امیدوارم که ب فال نیک بگیرید و یه موقع سوءتفاهمی پیش نیاد.
سعی کنید ک نامگداری هاتون رو با توجه به کاربرد کنترل و آبجکت انجام دهید.
نام گذاری پیشفرض کنترل ها ظاهر خوبی به کدنویسیتون نمیده و بعدا برای بروزرسانی به مشکل برمیخورید. حتی سعی کنید گه پروژه تستی هم باز میکنید نمگذاری اصولی انجام بدید. اولش یخورده زمان میبره ولی بعد ک عادت کردید دیگه راحت میشید.