如何使用c#.net for wpf应用程序在comboBox中的项目之间切换

如何使用c#.net for wpf应用程序在comboBox中的项目之间切换,c#,C#,如何使用c#.net for wpf应用程序在comboBox中的项目之间切换。一旦我关注comboBox,我就可以在项目之间切换,而不是关注comboBox,我想在项目之间切换。所以这可能是你想要的,我也不知道你想要什么。 这可以帮助你。 如果您关注组合框,则可以通过按向上键或向下键在两个项目之间切换 public partial class Window1 : Window { public Window1() { InitializeComponent()

如何使用c#.net for wpf应用程序在comboBox中的项目之间切换。一旦我关注comboBox,我就可以在项目之间切换,而不是关注comboBox,我想在项目之间切换。

所以这可能是你想要的,我也不知道你想要什么。 这可以帮助你。 如果您关注组合框,则可以通过按向上键或向下键在两个项目之间切换

 public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        comboBox1.Items.Add("1");
        comboBox1.Items.Add("2");
        comboBox1.SelectedIndex = 0;
        comboBox1.Focus();
    }

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Up)
        {
            if (comboBox1.SelectedIndex != 0)
                comboBox1.SelectedIndex--;
        }
        if (e.Key == Key.Down)
        {
            if (comboBox1.SelectedIndex != comboBox1.Items.Count-1)
                comboBox1.SelectedIndex++;
        }

    }
}
好吧,那我们就这样做吧。如果文本框文本发生更改,则调用第一个事件。 如果我没听错的话,你应该有这样的经历。第二个是您需要的。

   private void textBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        //deleting all items
        comboBox1.Items.Clear();
        //adding text of each textbox if not empty
        if (textBox1.Text != "")
            comboBox1.Items.Add(textBox1.Text);
        if (textBox2.Text != "")
            comboBox1.Items.Add(textBox2.Text);
        //if combobox not empty select first item
        if (comboBox1.Items.Count != 0)
            comboBox1.SelectedIndex = 0;
    }
所以我所做的是。选择其中一个文本框后,用户按向上或向下键,然后切换组合框的内容。此事件必须作为PreviewKeyDown事件分配给每个文本框

        private void textBox_KeyDown(object sender, KeyEventArgs e)
    {
        //key up or key down
        if (e.Key == Key.Up || e.Key == Key.Down)
        {
            //has 2 items
            if (comboBox1.Items.Count == 2)
            {
                if (comboBox1.SelectedIndex == 0)
                    comboBox1.SelectedIndex = 1;
                else
                    comboBox1.SelectedIndex = 0;
            }
        }
    }
这里是带有绑定事件的文本框的xaml代码

    <TextBox Height="23" Margin="12,0,0,76" Name="textBox1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="120" TextChanged="textBox_TextChanged" PreviewKeyDown="textBox_KeyDown" />
    <TextBox Height="23" HorizontalAlignment="Right" Margin="0,0,12,76" Name="textBox2" VerticalAlignment="Bottom" Width="120" TextChanged="textBox_TextChanged" PreviewKeyDown="textBox_KeyDown" />

有件事我忘了提。它只在其中一个文本框被聚焦时起作用。如果您有更多可以聚焦的项目,那么您必须为每个项目添加此事件,以确保无论这些项目中的哪一个现在被聚焦,都会被调用。
另一种可能是创建一个键盘钩子。但这很复杂。

因此,如果您单击组合框,您希望切换项目,对吗?不,阿尔伯特。不单击组合框,我希望在项目之间切换。我需要直接访问组合框项目的快捷方式,但您希望如何操作。需要在项目之间切换哪些操作。你只有两个或更多项目吗?我只有两个项目。实际上,在切换过程中,它会在两个文本框之间切换谢谢你,阿尔伯特。但是我想切换项目,而不聚焦组合框。好的,也许这次可以。检查从粗体文本开始的代码。