PDA

View Full Version : سوال: نمایش مقدار موجود در DataGridViewComboBoxColumn



Iran58
شنبه 10 مهر 1395, 10:19 صبح
سلام
یک دیتاگرید داریم که بصورت زیر پر میشود

private void Form8_Load(object sender, EventArgs e)
{

dataGridView2.ColumnCount = 3;
dataGridView2.Columns[0].Name = "Product ID";
dataGridView2.Columns[1].Name = "Product Name";
dataGridView2.Columns[2].Name = "Product Price";


string[] row = new string[] { "1", "Product 1", "1000" };
dataGridView2.Rows.Add(row);
row = new string[] { "2", "Product 2", "2000" };
dataGridView2.Rows.Add(row);
row = new string[] { "3", "Product 3", "3000" };
dataGridView2.Rows.Add(row);
row = new string[] { "4", "Product 4", "4000" };
dataGridView2.Rows.Add(row);


DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "Select Data";
cmb.Name = "cmb";
cmb.MaxDropDownItems = 4;
cmb.Items.Add("True");
cmb.Items.Add("False");
dataGridView2.Columns.Add(cmb);
}

حال می خواهم هرگاه از یک ردیف خارج شدم

var a = dataGridView2.CurrentRow.Cells[4].Value.ToString();
if (dataGridView2.CurrentRow != null) MessageBox.Show(a);

مقدار داخل کموباکس را نمایش بدهد
اما ارور زیر را می دهد


An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll


Additional information: Index was out of range. Must be non-negative and less than the size of the collection.

کد را باید چگونه تغییر بدهم
باتشکر

ژیار رحیمی
شنبه 10 مهر 1395, 11:59 صبح
خطای دسترسی به خارج از محدوده ایندکس به شما میدهد.شما در ابتدا dataGridView2.ColumnCount = 3; قرار دادی به 4 تبدیل کن.

dataGridView2.ColumnCount = 4;
dataGridView2.Columns[0].Name = "Product_ID";
dataGridView2.Columns[1].Name = "Product_Name";
dataGridView2.Columns[2].Name = "Product_Price";
dataGridView2.Columns[0].HeaderText = "Product ID";
dataGridView2.Columns[1].HeaderText = "Product Name";
dataGridView2.Columns[2].HeaderText = "Product Price";
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "Select Data";
cmb.Name = "cmb";
cmb.MaxDropDownItems = 4;
cmb.Items.Add("True");
cmb.Items.Add("False");
dataGridView2.Columns.Add(cmb);

string[] row = new string[] { "1", "Product 1", "1000" };
dataGridView2.Rows.Add(row);
row = new string[] { "2", "Product 2", "2000" };
dataGridView2.Rows.Add(row);
row = new string[] { "3", "Product 3", "3000" };
dataGridView2.Rows.Add(row);
row = new string[] { "4", "Product 4", "4000" };
dataGridView2.Rows.Add(row);