快速提问。我有一个comboBox,其中包含以下具有值的项目列表:
line 1: 1
line 2: 2
line 3: 4
line 4: 5
我在DataGridView中总共有5行,但我想忽略第3行。现在,当我使用以下for循环时,它的行为就好像第3行是第3行(我希望它是第4行),第4行是第4行(我希望是第5行)因为它们的位置清单。
有没有办法可以改变这个?
问题出现在for循环中,我在添加人员详细信息后更改单元格的颜色。
Passenger _Passenger = new Passenger();
int selectedIndexRow = comboBox1.SelectedIndex;
int selectedIndexCol = comboBox2.SelectedIndex;
//ADDING DETAILS OF NEWLY ADDED PASSENGER
_Passenger.Details = tbName.Text;
_Passenger.wasteSizeCm = Convert.ToDouble(nudWaistSize.Value);
_Passenger.BigToeSizeMm = Convert.ToDouble(nudToeSize.Value);
MessageBox.Show("Passenger Added");
//CHANGING COLOR OF THE CELL
for (int k = 0; k < dgvPlane.ColumnCount; k++)
{
for (int t = 1; t < dgvPlane.RowCount; t++)
{
dgvPlane[selectedIndexRow, selectedIndexCol].Style.BackColor = Color.Goldenrod;
}
}
//ADDING THE PASSENGER TO THE ARRAY
//PassengerList[selectedIndexCol, selectedIndexRow] = _Passenger;
}
答案 0 :(得分:1)
请记住,索引从0开始,组合中的第1行是索引0。
那说获取正确的Row和Column索引的最简单方法是不在组合中使用字符串。
填充你的组合:
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { 1, 2, 4, 5 });
}
从组合中检索数值:
int selectedIndexRow = (int)comboBox1.SelectedItem;
另外,为什么要循环并使用设置行索引和列索引?
你这样做的方法就是多次设置单个单元格的BackColor。
你不需要循环,只需要:
dgvPlane[selectedIndexRow, selectedIndexCol].Style.BackColor = Color.Goldenrod;