PDA

View Full Version : comboBox(i)l



shima2006
جمعه 23 مرداد 1388, 18:24 عصر
سلام دوستان
من تویه یک فرمم ده تا ComboBox دارم که می خوام مقادیر اونها رو بررسی کنم و در دیتابیس INSERT کنم و برای این کار از یک حلقه FOR استفاده می کنم ولی مشکل اینجاست که نمی دونم SYNTAX درست برای این که بنویسم ComboBox(i)l چیه ؟!

for (int i=0 ; i != 10 ; i++ )
if (ComboBox(i).selectedvalue > 0)

m.mahnani
جمعه 23 مرداد 1388, 18:42 عصر
سلام سوالتنو واضح تر بگین شاید بتونم راهنمایی کنم اصلا شما 10 combo box رو برای چی می خوایین شاید تو حل مساله دچار اشتباه شدید:متفکر:

shahab_ss
جمعه 23 مرداد 1388, 18:58 عصر
foreach (Control ct in this.Controls)
{
if (ct is CombotBox)
if(ct.SelectedValue != -1)
//Do what you Do...

}

shima2006
جمعه 23 مرداد 1388, 20:22 عصر
روش جالبیه ولی این ct اصلا خصوصیتی به نام SelectedValue نداره....



Error 1 'System.Windows.Forms.Control' does not contain a definition for 'selectedvalue' and no extension method 'selectedvalue' accepting a first argument of type 'System.Windows.Forms.Control' could be found (are you missing a using directive or an assembly reference?)

shahab_ss
جمعه 23 مرداد 1388, 20:29 عصر
شما میتونید یک propery دیگه رو چک کنید که بین همه کنترل ها بصورت مشترک وجود داره، مثلاً Text

راه دیگه اینه که کنترل جاری رو (ct) به کنترل مورد نظرتون (در اینجا کمبو باکس) Cast کنید ،بعد اون پراپرتی رو خواهید داشت.

Reza_Yarahmadi
جمعه 23 مرداد 1388, 21:15 عصر
یه روش همون کد دوستمونه

foreach (Control ct in this.Controls)
{
if (ct is ComboBox)
if (((ComboBox)ct).SelectedIndex != -1)
//Do what you Do...
}
روش دیگه که به نسبت سرعت بالاتری داره روش زیره:
البته این روش واسه حالتیه که اسم کمبوها مثل هم باشه فقط در مثلا یک اندیس اختلاف دارن! (مثل comboBox1 ، comboBox2 و ...)

for (int i = 1; i <= 10; i++)
{
ComboBox YourComboBox = (ComboBox)this.Controls["comboBox" + i];
MessageBox.Show(YourComboBox.Text);
}

shima2006
جمعه 23 مرداد 1388, 23:54 عصر
شما میتونید یک propery دیگه رو چک کنید که بین همه کنترل ها بصورت مشترک وجود داره، مثلاً Text

راه دیگه اینه که کنترل جاری رو (ct) به کنترل مورد نظرتون (در اینجا کمبو باکس) Cast کنید ،بعد اون پراپرتی رو خواهید داشت.

اینایی که گفتید یعنی چی؟؟؟:متفکر:
آقای یاراحمدی اون کد دومیه که گفتید جواب نداد

{"Object reference not set to an instance of an object."}
به نظرم این دستوری که گفتید یک مشکلی داره...

Saeed.Masoumi
شنبه 24 مرداد 1388, 00:08 صبح
private void button1_Click(object sender, EventArgs e)
{

ComboBox cb=new ComboBox();
foreach (Control cb2 in this.groupBox1.Controls)
{
if (cb2 is ComboBox)
{
cb = (ComboBox) cb2;
if ( cb.SelectedIndex != -1)
insert_it=(cb2.Text);
}
}
}
می تونی بجای متغییر insert_it یک آرایه رشته ای بسازی و هر دفعه اندیس آن را تغییر دهی و در آخر بیای و تمام عناصر آرایه را Insert کنی
موفق باشی

shima2006
شنبه 24 مرداد 1388, 10:01 صبح
متشکرم دوستان
از یک روش کاملا متفاوت حلش کردم....

Salar Ashgi
شنبه 24 مرداد 1388, 10:39 صبح
سلام ، میتونید از کد زیر استفاده کنید :



private void button1_Click(object sender, EventArgs e)
{
string str="";
for (int i = 1; i <= 3; i++)
{
if (this.Controls["comboBox" + i.ToString()] != null)
{
ComboBox cb = (ComboBox)(this.Controls["comboBox" + i.ToString()]);
str += cb.SelectedItem.ToString() +"\n";
}
}
MessageBox.Show(str);
}


http://salarcpp.persiangig.com/combo.JPG

موفق و پیروز باشید !!!