当我想更改 datagridview 的 ComboBox 时,它会自动更改相同 DataGridView 的所有其他组合
Posted
技术标签:
【中文标题】当我想更改 datagridview 的 ComboBox 时,它会自动更改相同 DataGridView 的所有其他组合【英文标题】:when I want to change a ComboBox of datagridview, its automatically change all other combos of same 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;
【问题讨论】:
【参考方案1】:您是指要更改combo2.DefaultCellStyle
的那一行吗?
发生这种情况是因为combo2.DefaultCellStyle
是对所有组合的默认单元格样式的引用,因此您没有更改这个组合 - 您正在更改通用默认样式。
如果您希望此组合的样式不同于默认样式(以及其他组合的样式),您可能应该创建一个单独的样式并将其设置为组合 2 的样式。
我猜该语句应该类似于combo2.DefaultCellStyle = ...
或combo2.SetDefaultCellStyle( ... )
【讨论】:
我有 combo2.DefaultCellStyle 但你能告诉我必须将它设置为什么值吗? 您应该在当前单元格样式的基础上创建一个新的单元格样式,并设置combo2.DefaultCellStyle 以引用新样式。以上是关于当我想更改 datagridview 的 ComboBox 时,它会自动更改相同 DataGridView 的所有其他组合的主要内容,如果未能解决你的问题,请参考以下文章
使用 rowtemplate 更改 datagridview 行高但不起作用