首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何返回到组合框中以前选定的条目?

如何返回到组合框中以前选定的条目?
EN

Stack Overflow用户
提问于 2021-10-11 20:45:28
回答 1查看 45关注 0票数 0

在我的应用程序中有一个类似如下的需求:

在一个窗体中有一个组合框和4个文本框。组合框始终包含值范围1...10。基于在组合框中选择的值,我需要从数据库中读取与所选值对应的4个数据项,并在4个文本框中显示这些值。因此,对于组合框中的每个值,数据库中都有4个值。

此外,用户还可以通过编辑4个文本框中的值来更改这些值。

例如,假设当前在组合框中选择的值为1,则从数据库中读取对应于记录1的数据并显示在4个文本框中。如果用户不编辑文本框中的任何值并选择条目2(或除1以外的任何其他值),则从数据库中获取与新选择的值(即2)相对应的数据,并将其显示在4个文本框中。但是如果用户通过键入四个可用文本框中的任何一个来编辑任何值,则对应于记录1的那些新值应该在切换到新选择的条目(即2 )之前被保存到数据库中。

为此,我在组合框的"SelectedIndexChanged事件处理程序“中编写了一些代码。在那里,我检查用户是否更改了任何值。如果是,我将提示用户保存数据。保存数据后,组合框将显示用户新选择的值,即2(4个文本框将显示对应于记录2的数据)。上面提到的所有功能都运行良好。但还有一个额外的要求:“如果对数据库的保存操作失败,那么组合框中的初始值应该与用户编辑的数据(在文本框中)一起显示,这意味着如果数据库写入失败,我必须显示当前选择的值1,而不是切换到新选择的值2”。

在SelectedIndexChanged处理程序中,我尝试编写以下代码。

代码语言:javascript
运行
复制
If (DatabaseWriteFails)
{
    ComboBox->SelectedIndex = previous_value; (previous_value is 1 in our example)
}

但上面的代码不起作用(我想是因为我们试图更改SelectedIndexChanged处理程序本身的选定值)。当我们进入SelectedIndexChanged处理程序时,我可以看到ComboBox->SelectedValue已经更改为新选择的值,即2。

问题是“一旦进入SelectedIndexChanged处理程序,我们如何才能返回到前一个条目”?任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-11 21:23:35

首先,如果您更改事件中的ComboBox值,它将再次触发该事件,因此不使用SelectedIndexChanged,而是使用SelectionChangeCommitted,后者仅在用户更改UI中的选定项时发生,而不是以编程方式发生。

其次,您应该使用SelectedItem或SelectedIndex来更改下拉列表,根据我的经验,SelectedValue绑定不会更新ComboBox。

正如评论中提到的,我给你的建议是使用绑定,甚至ReactiveUI

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69532322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档