是否可以从datagridview ColumnName中找到变量

本文关键字:变量 ColumnName datagridview 是否 | 更新日期: 2023-09-27 18:21:57

我有一个奇怪的问题。我有DataGridView,我有7列都是双精度的。我在包含信息的主类中有7个double数组。

我怎么能做这样的东西:

if(dgvValues.Columns[dgvValues.SelectedCells[0].ColumnIndex].Name == this.Variables.Name)
{
       this.Variables.Name[dgvValues.SelectedCells[0].RowIndex] = Convert.ToDouble(dgvValues.SelectedCells[0].Value.ToString());
}

我知道我可以用case来做,但我想知道有没有一个短的方法来做。因为如果我有20个专栏,我必须做20个case。

是否可以从datagridview ColumnName中找到变量

将这些值放入Dictionary<string, List<double>>

现在,您可以通过dgv列名..访问每个列:

// a named collection of lists of doubles:
Dictionary<string, List<double>> values = new Dictionary<string, List<double>>();
// set up the values-dictionary from column names:
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    values.Add(column.Name, new List<double>());
}
// load all values into the values-dictionary from the dvg:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
        values[cell.OwningColumn.Name].Add( Convert.ToDouble(cell.Value) );
}
// after the List is filled (!) you can access it like an array:
// load selected values into the values-dictionary from the dvg:
foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
{
    values[cell.OwningColumn.Name][cell.RowIndex] = Convert.ToDouble(cell.Value);
}
// reload selected values from the corresponding slots in the values-dictionary:
foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
{
    cell.Value = values[cell.OwningColumn.Name][cell.RowIndex];
}

请注意,在使用数组索引器时,必须用所有行完全填充列表才能访问正确的插槽!