comboBox列表值

时间:2014-08-28 19:08:58

标签: c# datagridview

快速提问。我有一个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;



    }

1 个答案:

答案 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;