首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除选择/清除数据绑定ComboBox?SelectedIndex = -1不起作用

如何删除选择/清除数据绑定ComboBox?SelectedIndex = -1不起作用
EN

Stack Overflow用户
提问于 2012-05-03 07:44:52
回答 14查看 47.2K关注 0票数 14

我正在尝试取消选择(空白)我的windows窗体应用程序中的一些组合框。在我的应用程序中,我有一个Reset方法,它将每个组合的SelectedIndex设置为-1。我所有的组合框都是数据绑定的,也就是说,每个组合框都是使用数据源填充的。

我注意到,有时我的Reset方法会起作用,即取消选择当前选中的项目并清空组合框。但是,其他时候,它会在我尝试将其设置为-1之后直接选择第一项(SelectedIndex = 0)。从用户的角度来看,这看起来像是一个bug,因为它并不总是“清除”表单。

根据MSDN的说法:

要取消选择当前选定的项目,请将SelectedIndex设置为-1。如果ComboBox项目是数据绑定项目,则不能将该项目的SelectedIndex设置为-1。

有没有人知道这附近有什么工作?

非常感谢

EN

回答 14

Stack Overflow用户

发布于 2014-12-01 19:22:38

使用void和property的组合

代码语言:javascript
运行
AI代码解释
复制
comboBox.ResetText();

 //to reset selected value
comboBox.SelectedIndex = -1;
票数 26
EN

Stack Overflow用户

发布于 2017-08-31 04:47:05

不知道是否还有人对此感兴趣,因为现在已经过去5年了,但我找到了一个非常简单的解决方法。完全不直观(我只是通过查看参考源代码才发现的),但实现起来很简单:

代码语言:javascript
运行
AI代码解释
复制
ComboBox1.FormattingEnabled = True;

是的,这就是所有的事情!

如果你很好奇,你可以仔细阅读source code,看看是怎么回事。@CuppM指出的bug的根本原因似乎是试图在数据源中设置位置:

代码语言:javascript
运行
AI代码解释
复制
if (!FormattingEnabled || SelectedIndex != -1) {
    this.DataManager.Position = this.SelectedIndex;
} 

我猜它应该是'&&‘而不是条件中的'||’,因为不管FormattingEnabled属性如何,代码可能不应该将位置设置为无效值。

在任何情况下,它都允许一个简单的变通方法。而且,由于'Format‘属性为空时的默认行为是no-op,因此您不必更改任何其他内容。它就是这样的。:-)

(我应该指出的是,我只在.NET 4.7中尝试过这一点,所以我不能说它是否适用于以前版本的.NET框架。)

票数 8
EN

Stack Overflow用户

发布于 2012-05-03 07:52:07

您可以尝试将所选值或项设置为null (VB中为Nothing)

我不记得抛出异常的行为了。但是,我确实记得我曾经在组合框中插入一个名为-1,(None)的值,在组合框被绑定数据后,通常通过数据绑定事件将其插入。我建议获取列表中的数据并将新值插入到此列表中。现在将组合绑定到列表。

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

https://stackoverflow.com/questions/10427172

复制
相关文章

相似问题

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