有点奇怪。我有一个带有未绑定CheckBox列的DataGridView。当ComboBox的选定项更改DataGridView时,它的DataSource已更新(根据ComboBox中选择的内容,此处没有绑定,只是条件语句)。更新DataSource后,我遍历一个集合并相应地设置CheckBox列的值。这很好用。但是,当我决定尝试在构造函数中设置ComboBox的SelectedItem以便在Form加载时ComboBox中有一个值时,同样的方法无法更新CheckBox单元格的状态,即使单步执行调试器显示值已设置为true。
public LocksForm()
{
InitializeComponent();
AddDataGridColumns();
GetLookupData();
cboLockType.SelectedIndexChanged += cboLockType_SelectedIndexChanged;
//Setting this fires the event but the checkboxes in the grid remain unchecked
cboLockType.SelectedItem = cboLockType.Items[0];
}
private void cboLockType_SelectedIndexChanged(object sender, EventArgs e)
{
//Bind the data to the grid etc.
UpdateLocks()
}
// This works but not when fired from the Form constructor, only when user selects a value from ComboBox at Runtime
private void UpdateLocks()
{
if (_lockedIDs != null && _lockedIDs.Any())
{
for (int j = 0; j < dgLocks.RowCount; j++)
{
if (_lockedIDs.Contains((Guid)dgLocks[0, j].Value))
{
dgLocks[1, j].Value = true;
}
}
}
}
答案 0 :(得分:0)
在构造函数中放置一个“Shown”EventHandler为我工作。
this.Shown += LocksForm_Shown;
void LocksForm_Shown(object sender, EventArgs e)
{
cboLockType.SelectedItem = cboLockType.Items[0];
}
这并不能解释为什么会发生这种情况。如果有人知道我有兴趣听到答案。