когда я хочу изменить ComboBox datagridview, он автоматически меняет все другие комбинации того же DataGridView - PullRequest
0 голосов
/ 04 января 2012

Прежде всего, я должен упомянуть, что видел этот вопрос , но это не помогло мне решить мою проблему.

В соответствии с моим предыдущим вопросом я сохранил 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;     
            }

        }

1 Ответ

0 голосов
/ 05 января 2012

Вы имеете в виду линию, где вы меняете combo2.DefaultCellStyle?

Это происходит потому, что combo2.DefaultCellStyle является ссылкой на стиль ячейки по умолчанию для всех комбинаций, поэтому вы не меняете этукомбо - вы меняете общий стиль по умолчанию.

Если вы хотите, чтобы стиль этого комбо отличался от стиля по умолчанию (и от стиля других комбо), вам, вероятно, следует создать отдельный стиль иустановите его как стиль combo2.

Я думаю, что выражение должно выглядеть примерно так: combo2.DefaultCellStyle = ... или combo2.SetDefaultCellStyle( ... )

...