当我想要更改Datagridview的ComboBox时,它会自动更改同一DataGridView的所有其他组合

时间:2012-01-04 15:04:14

标签: c# datagridviewcombobox

首先,我必须提到我已经看过this question,但它并没有帮助我解决我的问题。

根据我的previous question,我将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;     
            }

        }

1 个答案:

答案 0 :(得分:0)

您的意思是指您正在更改combo2.DefaultCellStyle的行吗?

这是因为combo2.DefaultCellStyle是对所有组合的默认单元格样式的引用,因此您不会更改此组合 - 您正在更改常见的默认样式。

如果您希望此组合的样式与默认样式(以及其他组合样式)不同,您应该创建一个单独的样式并将其设置为combo2的样式。

我想该陈述应该类似于combo2.DefaultCellStyle = ...combo2.SetDefaultCellStyle( ... )