当我想更改datagridview的组合框时,它会自动更改同一datagridview的所有其他组合框

本文关键字:datagridview 组合 其他 | 更新日期: 2023-09-27 18:19:37

首先,我必须指出,我看到了这个问题,但它并没有帮助我解决问题。

根据我之前的问题,我将DataGridView保存到了一个XML文件中。现在,当我使用存储在XML文件中的数据加载窗口表单时,我将填充DataGridView

我的问题是,当我想根据存储的数据设置一个ComboBox的值时,另一个ComboBox的值也会更改。我想分别设置每个ComboBox的值。

我的代码如下:

private void WindowSelection_Load(object sender, EventArgs e)
        {
            dataGridSource = DeserializeFromXML();
            foreach (WindowHolder obj in dataGridSource)
            {
                int index = dataGridViewWindowSelection.Rows.Add();
                DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn();
                combo2 = (DataGridViewComboBoxColumn)dataGridViewWindowSelection.Rows[index].Cells["Reader"].OwningColumn;
                combo2.DataSource = readerSource;
                int readerSourceIndex = findReaderSourceIndex(obj.reader);
                if (readerSourceIndex != -1)
                {
                    combo2.DefaultCellStyle.NullValue = readerSource[readerSourceIndex];
                }
                else
                {
                    combo2.DefaultCellStyle.NullValue = readerSource[0];
                }
                dataGridViewWindowSelection.Rows[index].Cells["Location"].Value = obj.location;
                dataGridViewWindowSelection.Rows[index].Cells["AlwaysOnTop"].Value = obj.alwaysOnTop;
                dataGridViewWindowSelection.Rows[index].Cells["AlwaysShow"].Value = obj.alwaysShow;     
            }
        }

当我想更改datagridview的组合框时,它会自动更改同一datagridview的所有其他组合框

您是指更改combo2.DefaultCellStyle的行吗?

之所以会发生这种情况,是因为combo2.DefaultCellStyle引用了所有组合的默认单元格样式,所以您没有更改这一个组合,而是更改了常见的默认样式。

如果你想让这个组合的风格不同于默认的风格(也不同于其他组合的风格),你可能应该创建一个单独的风格,并将其设置为combo2的风格。

我想该语句应该类似于combo2.DefaultCellStyle = ...combo2.SetDefaultCellStyle( ... )