【问题标题】:How to change selected value of a ComboBox with a shortcut C#如何使用快捷方式 C# 更改 ComboBox 的选定值
【发布时间】:2017-12-11 14:19:28
【问题描述】:

首先让我们说我是 C# 的新手... 我正在使用 WinForms:我尝试使用此代码通过快捷方式更改 ComboBox 的值。我也尝试过使用 SelectedValue 而不是 SelectedIndex。之后,我尝试在 ComboBox 更改值之前或之后将其聚焦。最后,我尝试将其转换为 stwitch 语句,但每次执行时都没有任何反应。
我正在使用 Visual Studio 2017 - 当我尝试调试它时,调试器向我显示,在它执行 if 语句中的代码后,它进入 else 语句并再次在那里执行代码......

private void Form_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.E)
    {
        //CBoxLimit.Focus();

        if (CBoxLimit.SelectedIndex == 0)
        {
            CBoxLimit.SelectedIndex = 1;
        }

        else
        {
            CBoxLimit.SelectedIndex = 0;
        }

        //CBoxLimit.Focus();
    }
}

提前感谢您的帮助...

【问题讨论】:

  • 尝试在断点的帮助下运行代码,看看是否有任何异常正在生成。如果是这样,然后发布正在生成的异常。
  • 我知道。我错误地写了回复作为答案。我以为我在发表评论。我什至删除了帖子。
  • 我尝试在它更改 SelectedIndex 的行上设置断点...在它执行 if 语句中的代码后,它进入 else 语句并再次在那里执行代码...
  • 执行进入 if 语句之前的CBoxLimit.SelectedIndex 值是多少?
  • 我已尝试将其设置为 0 或不设置任何值...

标签: c# winforms combobox keyboard-shortcuts


【解决方案1】:

看来您应该更改ComboBox 实例上的SelectedIndex 而不是CBoxLimit。此外,您应该将表单的KeyPreview 属性设置为True(参见here):

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.E)
            {
                comboBox1.SelectedIndex = 1;
            }
        }

【讨论】:

  • 我很抱歉,但我试过了,我得到了相同的结果...请注意,当我打开组合框并将鼠标悬停在所需的索引上时,它就可以工作...但只有当我悬停在它上面......我想知道为什么......
  • 你能补充更多细节吗?关于你的代码? WinForms 设计师?任何可以澄清问题的东西都会有所帮助......
  • 更改 SelectedIndex 只会影响表单中的一些标签和代码中的一些值...仅此而已...没有其他任何东西会影响代码中的 SelectedIndex...我开始认为我在 Visual Studio 中发现了一个错误......
  • 我很难相信,因为这是非常常见的情况......请参阅我更新的答案,效果很好(使用 VS 2012)
  • 即使组合框没有焦点,也应该能够激活快捷方式。所以处理组合框的关键事件并不是一个好主意。
猜你喜欢
  • 2018-07-13
  • 2016-03-19
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多