PDA

View Full Version : سوال: مشکل با ProgressBar در حالت تغییرات تکست باکس



iraj_astara
چهارشنبه 12 آبان 1389, 12:57 عصر
سلام من یه فرم دارم که 10-15 تایی تکست باکس و کامبو باکس داره ، حالا وقتی مثلا تکست باکس 1 پر شد 10 تا بهش اضافه بشه و سر بقیه ی تکس باکس و کامبو باکس ها هم همچنین

ولی مشکل من اینه که وقتی یک تکس باکسی رو مقدار میدم و دوباره بر میگردم که اصلاحش کنم باز هم به Progress Bar اضافه میشه ،در واقع میخوام هر باز تغییر که روی اون میشه فقط 1 بار Progress Bar تغییر کنه با یه سری از Event ها هم کار کردم ولی نمیدونم مشکل چیه ،اینجوری برنامه هم از کار می ایسته ، ممنون میشم راهنماییم کنید

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 13:36 عصر
براي تمام كنترلها دو رويداد Enter و TextChange رو روي 2 متد زير تنطيم كنيد

bool completed = false;
private void textBox1_Enter(object sender, EventArgs e)
{
if (String.IsNullOrEmpty((sender as Control).Text.Trim()))
completed = false;
else
completed = true;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!completed)
{
progressBar1.Value += 10;
completed = true;
}
else if (String.IsNullOrEmpty((sender as Control).Text))
{
progressBar1.Value -= 10;
completed = false;
}
}

mahdi87_gh
چهارشنبه 12 آبان 1389, 13:36 عصر
نظر من اینه که شما رویدادی تعریف کنید و در اون پر یا خالی بودن همه کنترلها رو بررسی کنید و طبق این بررسی مقداری به پروگرسبار بدهید.جالا برای اینکه این عمل برای همه کنترلها انجام بشه این تابع رو به رویداد Leave اختصاص بدین که وقتی فوکوس از کنترلی خارج میشه این تابع اجرا بشه و پروگرس بار مقدار دهی بشه

iraj_astara
پنج شنبه 13 آبان 1389, 00:19 صبح
براي تمام كنترلها دو رويداد Enter و TextChange رو روي 2 متد زير تنطيم كنيد

bool completed = false;
private void textBox1_Enter(object sender, EventArgs e)
{
if (String.IsNullOrEmpty((sender as Control).Text.Trim()))
completed = false;
else
completed = true;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!completed)
{
progressBar1.Value += 10;
completed = true;
}
else if (String.IsNullOrEmpty((sender as Control).Text))
{
progressBar1.Value -= 10;
completed = false;
}
}
دوست عزیز ممنون از توجهتون
ولی راستش این کد رو در event ها هم میزارم تغییری ایجاد نمیشه ، مثل حالت قبل ، از ظهر دربارش فکر کردم ولی چیزی به ذهنم نرسید ،همیشه اشکالای کوچیک کارهارو لنگ میکنه

bade saba
پنج شنبه 13 آبان 1389, 01:02 صبح
این برنامه اون کاری که میخوای رو انجام میده ، خیلی سادس اگه نفهمیدی بگو توضیح بدم

cardano7
پنج شنبه 13 آبان 1389, 03:53 صبح
سلام
به نظر من دو Event بیشتر نساز. یکی زمانی اجرا شود که هر کدام از TextBox ها تغییر می کند. دیگری زمان تغییر ComboBox ها ظاهر می شود. حالا فرض کنید ما روی Event مربوط به TextBoxداریم فکر می کنیم. این رویداد میاد بررسی می کنه که چند تا از TextBoxها پر یا خالی هستند. دیگه کاری نداره به اینکه کی و کجا پر یا خالی شدند. و بر این اساس مقدار TextBox_N را تغییر میده و متدی را صدا می زنه که بر اساس مقدار TextBox_N و ComboBox_N بیاد و مقدار ProgressBar رو تعیین کنه.

iraj_astara
پنج شنبه 13 آبان 1389, 10:07 صبح
این برنامه اون کاری که میخوای رو انجام میده ، خیلی سادس اگه نفهمیدی بگو توضیح بدم

ممنون دوست گرامی ، مشکلم به خوبی حل شد:چشمک: