![]() |
时尚的楼房 · 中共四川省委外事工作委员会办公室(四川省外事 ...· 5 月前 · |
![]() |
爱喝酒的茶叶 · 夜凌云(3D动画《超兽武装》及其衍生作品中的 ...· 5 月前 · |
![]() |
玩足球的酱牛肉 · 【地评线】瞭望评 | 这样的“班味”,可以浓一点· 6 月前 · |
![]() |
谦逊的红豆 · 学校与建龙集团、马来西亚东钢集团、东姑阿都拉 ...· 11 月前 · |
![]() |
有情有义的蜡烛 · 斗罗大陆126集:五年之约已到,戴沐白、马红 ...· 1 年前 · |
在我的应用程序中有一个类似如下的需求:
在一个窗体中有一个组合框和4个文本框。组合框始终包含值范围1...10。基于在组合框中选择的值,我需要从数据库中读取与所选值对应的4个数据项,并在4个文本框中显示这些值。因此,对于组合框中的每个值,数据库中都有4个值。
此外,用户还可以通过编辑4个文本框中的值来更改这些值。
例如,假设当前在组合框中选择的值为1,则从数据库中读取对应于记录1的数据并显示在4个文本框中。如果用户不编辑文本框中的任何值并选择条目2(或除1以外的任何其他值),则从数据库中获取与新选择的值(即2)相对应的数据,并将其显示在4个文本框中。但是如果用户通过键入四个可用文本框中的任何一个来编辑任何值,则对应于记录1的那些新值应该在切换到新选择的条目(即2 )之前被保存到数据库中。
为此,我在组合框的"SelectedIndexChanged事件处理程序“中编写了一些代码。在那里,我检查用户是否更改了任何值。如果是,我将提示用户保存数据。保存数据后,组合框将显示用户新选择的值,即2(4个文本框将显示对应于记录2的数据)。上面提到的所有功能都运行良好。但还有一个额外的要求:“如果对数据库的保存操作失败,那么组合框中的初始值应该与用户编辑的数据(在文本框中)一起显示,这意味着如果数据库写入失败,我必须显示当前选择的值1,而不是切换到新选择的值2”。
在SelectedIndexChanged处理程序中,我尝试编写以下代码。
If (DatabaseWriteFails)
ComboBox->SelectedIndex = previous_value; (previous_value is 1 in our example)
}
但上面的代码不起作用(我想是因为我们试图更改SelectedIndexChanged处理程序本身的选定值)。当我们进入SelectedIndexChanged处理程序时,我可以看到ComboBox->SelectedValue已经更改为新选择的值,即2。
问题是“一旦进入SelectedIndexChanged处理程序,我们如何才能返回到前一个条目”?任何帮助都是非常感谢的。谢谢。
发布于 2021-10-11 21:23:35
首先,如果您更改事件中的ComboBox值,它将再次触发该事件,因此不使用SelectedIndexChanged,而是使用SelectionChangeCommitted,后者仅在用户更改UI中的选定项时发生,而不是以编程方式发生。
其次,您应该使用SelectedItem或SelectedIndex来更改下拉列表,根据我的经验,SelectedValue绑定不会更新ComboBox。
正如评论中提到的,我给你的建议是使用绑定,甚至 ReactiveUI 。
https://stackoverflow.com/questions/69532322
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
![]() |
玩足球的酱牛肉 · 【地评线】瞭望评 | 这样的“班味”,可以浓一点 6 月前 |