PDA

View Full Version : سوال: کمک درباره استفاده از comboBox



پروگرامنویس
سه شنبه 21 شهریور 1391, 16:56 عصر
سلام
من میخوام تو برنامم از یه comboBox استفاده کنم.

سناریو برنامه: من از قبل به آیتم های comboBox عدد دادم از (1تا42).اینا شماره های هر درسه که توی جدول در یه ستون ذخیره میشه،کاربر توی این پنجره متونه اطلاعات جدید هر درس رو وارد و بعد از comboBox شماره درس رو انتخاب و در پایگاه داده ثبت کنه.اما برای راحتی کار ،وقت فرم لود میشه یه متد میره و آخرین شماره درس رو از ستون مربوطه جدول برمیگردونه و در comboBox قرار میده تا کاربر بدونه شماره آخرین درس چی بوده .حالا من نمیدونم برای این کار از کدوم خاصیت comboBox استفاده کنم!از خاصیت items.add() استفاده کردم اما مثلا وقتی متد عدد 1 رو برمیگردونه توی comboBox عدد 1 جدید بعد از 42 اضافه میشه.
من نمیخوام مقدار جدید اضافه شه میخام مقدار متناظر برگشتی متد در comboBox نشون داده شه.
پیشاپیش سپاس از کمکتون

Arash_janusV3
سه شنبه 21 شهریور 1391, 17:19 عصر
مشکلتون چیه؟
اگر از کد هستش کدتون رو بگذارید
اگر نیست بیشتر توضیح بدید

matin.soft
سه شنبه 21 شهریور 1391, 21:33 عصر
با سلام خدمت شما مهندس عزیز
شما می توانید بصورت زیر عمل کنید و از این خاصیت کمبوباکس استفاده نمایید:
combo1.selectedItem="1";
که با این دستور اگه عدد 1 قبلاً توی آیتم های کمبوباکس وجود داشته باشه اونو انتخاب می کنه.
موفق باشی

پروگرامنویس
سه شنبه 21 شهریور 1391, 22:13 عصر
مشکلتون چیه؟
اگر از کد هستش کدتون رو بگذارید
اگر نیست بیشتر توضیح بدید



//متدی که بزرگترین عدد فیلد رو برمیگردونه
public int max_lsn()
{

c = new SqlCommand("select MAX(lsn) from tb1", db.Connect());
object objmax = c.ExecuteScalar();
if (objmax == DBNull.Value)
//اگه هنوز رکوردی در جدول ثبت نشده باشه
return 0;
else
{
int max = Int32.Parse(objmax.ToString());
return max;
}
}

//کدهای لود شدن فرم
pan2.Visible = true;
//
global gl = new global();
//مشکل خط زیر
comboBox1.SelectedItem = gl.max_lsn();

پروگرامنویس
سه شنبه 21 شهریور 1391, 22:14 عصر
با سلام خدمت شما مهندس عزیز
شما می توانید بصورت زیر عمل کنید و از این خاصیت کمبوباکس استفاده نمایید:
combo1.selectedItem="1";
که با این دستور اگه عدد 1 قبلاً توی آیتم های کمبوباکس وجود داشته باشه اونو انتخاب می کنه.
موفق باشی

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

Arash_janusV3
سه شنبه 21 شهریور 1391, 22:20 عصر
//متدی که بزرگترین عدد فیلد رو برمیگردونه
public int max_lsn()
{

c = new SqlCommand("select MAX(lsn) from tb1", db.Connect());
object objmax = c.ExecuteScalar();
if (objmax == DBNull.Value)
//اگه هنوز رکوردی در جدول ثبت نشده باشه
return 0;
else
{
int max = Int32.Parse(objmax.ToString());
return max;
}
}

//کدهای لود شدن فرم
pan2.Visible = true;
//
global gl = new global();
//مشکل خط زیر
comboBox1.SelectedItem = gl.max_lsn();



خوب دستوراتی که combo box رو پر می کنید؟

پروگرامنویس
چهارشنبه 22 شهریور 1391, 11:23 صبح
خوب دستوراتی که combo box رو پر می کنید؟

combo box رو من توی پنجره پروپرتی از قبل پر کردم نه تو برنامه نویسی چون تعداد درسها ثابته!از 1 تا 42.
کابر توی فرم وقتی تکس باکس های دیگه رو پر کرد میره سراغ کمبوباکس ،واسه اینکه بدونه آخرین درس چی بوده آخرین شماره توی کمبو نشون داده میشه(با متد max_lsn() که هنگام لود فرم انجام میشه ).حالا شاید کاربر بخواد این اطلاعات رو توی درس های قبلتر یا بعدتر ثبت کنه!برای اینکار با زدن کمبوباکس یکی از شماره های 1تا 42 رو انتخاب میکنه.
نمی دونم تونستم برسونم یا نه!

پروگرامنویس
چهارشنبه 22 شهریور 1391, 13:04 عصر
مقدار بازگشتی max_lsn از چه نوعی هست؟ اگر عددی هست به رشته تبدیلش کنید.

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

عکس زیر موقعه لود شدن فرمه که میخوام شماره آخرین درسی که توی دیتابیس هست رو از جدول برگردونه و در کمبوباکس نشون بده(توسط متد max_lsn() ):

http://up.vatandownload.com/images/3fxacpbie4o8qd5eqqd8.png

اینم وقتیه که کاربر میخواد اطلاعات رو سیو کنه:
http://up.vatandownload.com/images/xvbeqgz6ssp68zzgy61.png

matin.soft
پنج شنبه 23 شهریور 1391, 18:47 عصر
سریعترین روش این هست که شما از setting استفاده کنی در قسمت پراپرتیز از قسمت ستینگ یه فیلد رشته ایجاد کن و وقتی کاربر برروی save کلیک کرد ستینگ رو ذخیره کن با این کار آخرین عدد ذخیره شده برای همیشه هنگام لود فرم باقی خواهد ماند.
برای سیو ستینگ کد زیر رو استفاده کن.
properties.setting.default.save();
موفق باشید.

mhdhp86
دوشنبه 17 مهر 1391, 17:44 عصر
properties.setting.default.save();

این کد رو کجا بنویسم؟ و چطوری به کومبوباکس ربطش بدم؟ منم مشکل همین دوستمون رو دارم. و با selecteditem و selectedtext کار نمی کنه.

Nima_kyan
دوشنبه 17 مهر 1391, 23:18 عصر
این کد رو کجا بنویسم؟ و چطوری به کومبوباکس ربطش بدم؟ منم مشکل همین دوستمون رو دارم. و با selecteditem و selectedtext کار نمی کنه. همونطور که دوستمون گفت تو دکمه ای که قرار اطلاعات رو save کنه.(تو عکس بالا دکمه ok)
شما اول یه متغییر تو setting پروژتون تعریف میکنید که scope اش user باشه و حالا تو دکمه save تون این کد رو مینویسین

Properties.Settings.Default.str = comboBox1.Text;
Properties.Settings.Default.Save();

str اسم متغییریه که تو setting تعریف کردم
و حالا تو رویداد لود فرمت از کد زیر واسه لود شدن مقدار ذخیره شده استفاده کن

comboBox1.Text = Properties.Settings.Default.str;