0

首先,我必须提到我已经看到了这个问题,但这并没有帮助我解决我的问题。

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

我的问题是,当我想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;     
            }

        }
4

1 回答 1

0

你的意思是你要改变的那条线combo2.DefaultCellStyle

发生这种情况是因为combo2.DefaultCellStyle是对所有组合的默认单元格样式的引用,因此您没有更改这个组合 - 您正在更改通用默认样式。

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

我想声明应该看起来像combo2.DefaultCellStyle = ...combo2.SetDefaultCellStyle( ... )

于 2012-01-05T06:33:49.397 回答