gpt4 book ai didi

winforms - 在选择更改时直接应用和验证绑定(bind)的 DataGridViewComboBoxCell

转载 作者:行者123 更新时间:2023-12-02 04:13:13 24 4
gpt4 key购买 nike

我有一个窗体 DataGridView包含一些 DataGridViewComboBoxCell使用 DataSource 绑定(bind)到源集合的 s , DisplayMemberValueMember特性。目前,只有在我单击另一个单元格并且组合框单元格失去焦点后,组合框单元格才会提交更改(即 DataGridView.CellValueChanged 被引发)。

在组合框中选择新值后,我将如何理想地直接提交更改。

最佳答案

此行为被写入 DataGridViewComboBoxEditingControl 的实现中。 .值得庆幸的是,它可以被覆盖。首先,您必须创建上述编辑控件的子类,覆盖 OnSelectedIndexChanged方法:

protected override void OnSelectedIndexChanged(EventArgs e) {
base.OnSelectedIndexChanged(e);

EditingControlValueChanged = true;
EditingControlDataGridView.NotifyCurrentCellDirty(true);
EditingControlDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

这将确保 DataGridView当组合框中的项目选择发生更改时,会正确通知它。

然后你需要继承 DataGridViewComboBoxCell并覆盖 EditType属性从上面返回编辑控件子类(例如 return typeof(MyEditingControl); )。这将确保在单元格进入编辑模式时创建正确的编辑控件。

最后可以设置 CellTemplate您的 DataGridViewComboBoxColumn 的属性(property)到单元子类的一个实例(例如 myDataGridViewColumn.CellTemplate = new MyCell(); )。这将确保网格中的每一行都使用正确类型的单元格。

关于winforms - 在选择更改时直接应用和验证绑定(bind)的 DataGridViewComboBoxCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com