【问题标题】:How can I have a ComboBox retain the recently entered values?如何让 ComboBox 保留最近输入的值?
【发布时间】:2012-07-25 05:11:22
【问题描述】:

我有一个 c# 中的 WinForms 程序,它具有一个文本字段,我想用一个可编辑的 ComboBox 替换它。

我想要实现的效果类似于OpenFileDialog,或者某种程度上是Windows Explorer 中的地址栏。也就是说,当您输入有效项目时,该项目将添加到下拉菜单显示的可能值列表中。我也希望这在程序的后续运行中持续存在。

所以,基本上

  1. 程序第一次运行,ComboBox为空,列表中没有任何内容
  2. 用户在 ComboBox 中输入一个值并按 Enter(或按钮),使用该值,然后将其添加到 ComboBox 的列表中
  3. 用户退出程序
  4. 用户重新进入程序,ComboBox 为空,但之前会话中使用的值在列表中。

我可以想出几种方法来实现这一点,但这似乎有一种我不知道的简单方法可以实现。就像某人如何实现自动完成只是发现控件已经支持它一样。

如果没有,那么我可以继续使用其他方式来添加和保存信息,我只是好奇是否已经有现成的东西。

【问题讨论】:

  • Combox 具有自动完成功能。您唯一需要做的就是将列表保存在存储中并检索它。 (普通文件 IO)
  • 我同意 Steve 的观点。您可以依靠序列化来轻松持久化状态对象,而不是深入 I/O 原始操作。无论如何,如果我是你,我更喜欢一个简单的对列表作为键、值持久化\n
  • 也许这是user defined settings?的工作
  • 您可以将搜索词列表保存为System.Collections.Specilized.String.Collection 设置并在应用程序启动时检索值。
  • 好的,所以我基本上走的是文件 I/O 路线,所以如果有人回答我会接受它

标签: c# winforms combobox


【解决方案1】:

从组合框的属性列表中,您可以选择 DropDownStyle 作为 DropDown,并从 Misc 中选择自动完成模式为(建议)或(附加)。

当用户输入一些东西时,它会被保存,当他下次运行应用程序时,你应该用选项填充组合框或从杂项中提供一个自定义源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2014-12-11
    • 2018-08-22
    相关资源
    最近更新 更多