【问题标题】:when I want to change a ComboBox of datagridview, its automatically change all other combos of same DataGridView当我想更改 datagridview 的 ComboBox 时,它会自动更改相同 DataGridView 的所有其他组合
【发布时间】:2012-01-04 15:04:13
【问题描述】:

首先,我必须提到我见过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;     
            }

        }

【问题讨论】:

    标签: c# datagridviewcombobox


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我有 combo2.DefaultCellStyle 但你能告诉我必须将它设置为什么值吗?
    • 您应该在当前单元格样式的基础上创建一个新的单元格样式,并设置combo2.DefaultCellStyle 以引用新样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多