![]() |
骑白马的小蝌蚪 · QComboBox ...· 2 月前 · |
![]() |
狂野的松树 · vb.net list 使用方法 ...· 1 月前 · |
![]() |
会搭讪的钢笔 · JComboBox (Java 2 ...· 2 天前 · |
![]() |
神勇威武的夕阳 · 【省6900元】掌阅电子书阅读器_iRead ...· 7 月前 · |
![]() |
听话的灌汤包 · 关于发布上海市2024年度“科技创新行动计划 ...· 8 月前 · |
![]() |
飞翔的荒野 · 中日钓鱼岛争端_历史频道_凤凰网· 9 月前 · |
![]() |
潇洒的吐司 · 东南亚人买什么车?_车家号_发现车生活_汽车之家· 11 月前 · |
![]() |
重情义的米饭 · Python字符编码转码之GBK,UTF8互 ...· 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