0

很奇怪的东西。我有一个带有未绑定 CheckBox 列的 DataGridView。当 ComboBox 的选定项发生更改时,DataGridView 会更新它的 DataSource(根据 ComboBox 中选择的内容,这里没有绑定,只是一个条件语句)。更新 DataSource 后,我遍历一个集合并相应地设置 CheckBox 列的值。这工作正常。但是,当我决定尝试在构造函数中设置 ComboBox 的 SelectedItem 以便在加载表单时 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;
                }

            }

        }
    }
4

1 回答 1

0

在构造函数中放置一个“显示”事件处理程序对我有用。

this.Shown += LocksForm_Shown;

void LocksForm_Shown(object sender, EventArgs e)
    {
        cboLockType.SelectedItem = cboLockType.Items[0]; 
    }

这并不能解释为什么会发生这种情况。如果有人知道我很想听听答案。

于 2013-06-20T11:55:23.807 回答