PDA

View Full Version : مبتدی: برگرداندن دو مقدار از طریق ComboBox



sattar1
شنبه 30 آذر 1398, 20:43 عصر
http://uupload.ir/files/90xa_untitled.png


با سلام
جدولی با داده های فوق داریم
من ستون دوم جدول رو در ComboBox به نمایش در آوردم
حالا میخوام با انتخاب مقدار موجود در ComboBox
نام Label به مقدار ستون سوم جدول تبدیل بشه
و علاوه بر اون مقدار ستون اول جدول در textBoxX1 به نمایش در بیاد؟
به عبارتی در آن واحد امکان دارد دو مقدار را از طریق ComboBox (که به یک جدول اشاره میکند) بر گردانیم؟


ممنون

the king
یک شنبه 01 دی 1398, 00:31 صبح
با سلام
جدولی با داده های فوق داریم
من ستون دوم جدول رو در ComboBox به نمایش در آوردم
حالا میخوام با انتخاب مقدار موجود در ComboBox
نام Label به مقدار ستون سوم جدول تبدیل بشه
و علاوه بر اون مقدار ستون اول جدول در textBoxX1 به نمایش در بیاد؟
به عبارتی در آن واحد امکان دارد دو مقدار را از طریق ComboBox (که به یک جدول اشاره میکند) بر گردانیم؟


ممنون


private void Form1_Load(object sender, EventArgs e)
{
var dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("value", typeof(double));
dt.Rows.Add(1, "0", 1);
dt.Rows.Add(2, "9%", 0.09);
dataGridView1.DataSource = dt;

comboBox1.DataSource = dt;
comboBox1.DisplayMember = "name";
textBox1.DataBindings.Add("Text", dt, "id");
label1.DataBindings.Add("Text", dt, "value");
}

اون comboBox1.DataSource = dt میگه آیتم هایی که قراره داخل ComboBox نمایش داده بشن از منبع داده dt بیاد.
و "comboBox1.DisplayMember = "name میگه از بین ستون های اون منبع داده dt آیتم های ستون name باید نمایش داده بشه.
این comboBox1 الان علاوه بر اینکه محتویات ستون name رو نشون میده، روی dt هم تاثیر داره، هر انتخابی که بکنه، سطر انتخاب شده در dt رو مشخص کرده. مشابه همین مساله رو در dataGridView1 هم داریم.
و textBox1.DataBindings.Add("Text", dt, "id") میگه در منبع داده dt هر کدوم از سطر ها که انتخاب شد، ستون id این انتخاب رو در مشخصه Text اون textBox1 قرار بده.
و label1.DataBindings.Add("Text", dt, "value") میگه در منبع داده dt هر کدوم از سطر ها که انتخاب شد، ستون value این انتخاب رو در مشخصه Text اون label1 قرار بده.

sattar1
یک شنبه 01 دی 1398, 19:50 عصر
اون comboBox1.DataSource = dt میگه آیتم هایی که قراره داخل ComboBox نمایش داده بشن از منبع داده dt بیاد.
و "comboBox1.DisplayMember = "name میگه از بین ستون های اون منبع داده dt آیتم های ستون name باید نمایش داده بشه.
این comboBox1 الان علاوه بر اینکه محتویات ستون name رو نشون میده، روی dt هم تاثیر داره، هر انتخابی که بکنه، سطر انتخاب شده در dt رو مشخص کرده. مشابه همین مساله رو در dataGridView1 هم داریم.
و textBox1.DataBindings.Add("Text", dt, "id") میگه در منبع داده dt هر کدوم از سطر ها که انتخاب شد، ستون id این انتخاب رو در مشخصه Text اون textBox1 قرار بده.
و label1.DataBindings.Add("Text", dt, "value") میگه در منبع داده dt هر کدوم از سطر ها که انتخاب شد، ستون value این انتخاب رو در مشخصه Text اون label1 قرار بده.

خیلی خیلی ممنون بابت راهنمایی مفیدتون


امیدوارم به هر چی بخواهید برسید


فقط یک نکته


از اونجا که من به Combobox یک مقدار پیش فرض داده ام ("-انتخاب نمایید-")
چکار کنم تا در این حالت label و textBox مقداری نگیره
private void Form1_Load(object sender, EventArgs e)
{
bindingSource1.DataSource = db.Fillcombo();
comboBoxEx1.Text = "-انتخاب نمایید-";
labelX1.DataBindings.Add("Text", bindingSource1, "value");
textBoxX1.DataBindings.Add("Text", bindingSource1, "id");
}




http://uupload.ir/files/mxme_capture2.png



البته من برای رفع این مشکل در خاصیت SelectedIndexChanged کمبوباکس کد زیر رو قرار دادم که در تغییر اول درسته
اما برای تغییر بعدی با این خطا مواجه میشم (به عبارتی مقدار کمبوباکس دو بار متوالی عوض شود):

http://uupload.ir/files/l6rn_capture.png

sattar1
پنج شنبه 05 دی 1398, 16:51 عصر
با سلام
اگه داده از نوع Float باشه چی کار باید کرد؟
http://uupload.ir/files/796k_555.png
به شیوه ی قبل با پیغام خطای زیر مواجه میشم

http://uupload.ir/files/cyan_444.png