- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个组合框,我已经可以向其添加项目,并且我希望能够在我按下删除键时删除我选择的项目。
这是我现在使用的代码。
private void commandComboBox_KeyDown(object sender, KeyEventArgs e)
{
var myComboBox = (ComboBox)sender;
string text = myComboBox.Text;
if (e.KeyCode == Keys.Enter)
{
myComboBox.Items.Add(myComboBox.Text); // Add
}
if (e.KeyCode == Keys.Delete)
{
myComboBox.Items.Remove(myComboBox.SelectedItem);
}
}
当我在组合框中单击并开始键入然后按回车键时,我听到窗口声音(不确定是哪一个),然后该项目被添加到列表中。当我点击下拉按钮时,我会看到上面输入的文本项。当我点击删除时,该项目消失了(至少我认为它消失了)然后当我点击其他地方时我得到这个异常
System.ArgumentOutOfRangeException: InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index
此外,当我点击下拉按钮时,我仍然看到空白
所以我的问题是如何正确地从 ComboBox 中删除项目:)
此外,如果有比 ComboBox 更好的东西,请提一下,TY
最佳答案
您听到的 Windows 声音实际上是错误提示音。组合框不接受回车键,因此它会向您发出“不!”的哔哔声。当然,您的代码也会运行,添加项目,但这不会改变组合框认为您在焦点为错误时按 Enter 键的事实。如果您打算使用当前设计,则需要在接收到 Enter 键后吃掉它,这样组合框就不会继续尝试处理它。为此,请将 e.SuppressKeyPress
设置为 true。
出现异常是因为您删除了组合框中的所有项目,但代码的其他部分试图获取项目 #0(第一项)的文本。没有第一项,因为您删除了它,因此抛出异常。我不确定是什么代码对此负责,因为我看不到它,但我猜您已经为诸如 SelectedIndexChanged 事件之类的事件编写了处理程序。
确实,这是一个非常不寻常的界面。组合框的目的是为用户提供一个选项列表,而不是让他们输入多个选项。如果需要,请使用多行文本框。至少这样,他们将能够看到他们输入的所有内容。
或者,您可以为此使用经典的界面惯用语,其中有一个文本框可以输入,它与添加按钮一起使用,可以将输入的文本添加到 ListBox 控件中。删除按钮删除列表框中当前选定的项目。清除按钮清除列表框中的所有项目。是的,使用起来和解释起来一样令人困惑。尽可能避免这些。它们在过去糟糕的 UI 设计时代更受欢迎。
Also when I hit the dropdown button I still see the empty spaces
这些实际上并不是空白。嗯,他们是,但不是真的。 :-) 我的意思是它们不是代表单个“空”项目的占位符。这正是您在整个组合框为空(不包含任何项目)时所看到的。因为它不包含项目,所以它不能自动调整其下拉窗口的高度,所以它使用固定大小。
关于c# - 如何使用 C#/WinForms 在运行时从 ComboBox 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37886513/
NHibernate version: 3.3.2. 我有一个包含多个操作的 NHibernate 事务。作为事务中的中间步骤之一,我尝试通过 Session.Save 插入一个具有自动增量 PK 的
请参阅我有一个具有多个值的 HashSet,该值可以包含例如 4141234567 、 4241234567 _0x10456790719 4141234567 _0x104567907907 和 _
我有一个 javafx 应用程序,我有一个主界面,我可以在其中设置我的舞台并启动该应用程序。我还有一个 Controller 类: public class Controller { @
我正在编写一个与 Web 服务集成的 iPhone 应用程序。我将从网络服务获取数据并用它填充表格 View 。我的问题:当用户滚动表格 View 时,我希望从 Web 服务动态加载更多数据并填充表格
我有以下结构: PreProd > Variables.tf 具有: variable "vms" { default = [ { "hostname" : "Monitor0
我下面有一个 Shiny 的应用程序,它显示绘图或表格。我对表格不感兴趣,我的问题只涉及 plotly 部分。当我使用此 javascript solution 在浏览器中打开应用程序时,我尝试下载该
我目前正在学习如何在 Java 中使用 Swing。将 JTextFields、JLabels 或 JButtons 添加到 JPanel 时,我通常用 4 行来完成,如下所示: gbc.gridx
我有一个名为 TabView 的自定义 UIView 类。每个 TabView 中都有 2 个标签以及一些其他元素。我使用界面生成器将这些标签添加到 TabView 中。在将 TabViews 作为
class A{ private List list; // getter setter public class B{ @command public void dele
当计时器达到零时,我试图从 Pane 中删除元素,更具体地说是标签和文本区域。但是,当计时器达到 0 并且我调用此方法时,我收到此异常。 Exception in thread "AWT-EventQ
使用 LINQ 时我应该从 WCF 服务返回什么?例如: var res = from q in context.cust select q; LINQ 遵循延迟执行,因此语句在运
我有一个计时器,可以在 GameScene.swift 文件中启动/重置,但是当应用程序在通话期间最小化或按下主页按钮时,它会继续运行。如何停止计时器并在应用程序再次处于事件状态时继续计时器? if
我有以下 Java 程序,但我不想在最后一个元素之后分配“,”,怎么办? String range = "400-450"; Integer startRange = null;
我正在使用 SAX 来解析一些 XML。在我的处理程序中 startElement()方法我正在尝试读取名为 xsi:type 的属性的值,例如: String type = attributes.g
我正在从事一个项目,该项目必须将数据从 Excel 文件导入和导出到数据库等。我必须从数据库获取数据,然后。但是如何根据 id、电话号码、用户名检查 excel 文件中的数据是否不重复。这是读取exc
我需要 Hook 程序的日志记录功能并获取它的日志记录参数,它使用 sqlite3_prepare_v2 -> sqlite3_bind_xxx -> sqlite3_step 函数。我想知道是否有可
您好,我正在尝试创建一个画笔,但我在使用 SelectObject 这行代码时遇到了问题: Brush_C = SelectObject(hdc_TS, hBrush); 错误是这样的: line 2
我正在尝试制作一个用户可以登录并将其用户数据保存到 mysql-db 的应用程序。我正在使用 PreferenceActivity 和 PreferenceFragment 来处理这个问题。通常这工作
我们使用自定义标签代码在 Google map 中添加带有标签的标记,还使用 MarkerCluster 库对标记进行聚类。 我们的问题是标记隐藏了,但标签仍然显示。我们需要修改http://go
我有一个包含 3 列的 CSV 文件;文本,整数,文本。当我导入这些时,所有数据都包含在双括号中。我不确定为什么。是否可以使用 COPY 在导入时删除这些内容?或者我应该导入为文本,然后使用 sele
我是一名优秀的程序员,十分优秀!