如何使用 c# .net for wpf application 在组合框中的项目之间切换。一旦我专注于组合框,我就可以在项目之间切换,而不是关注我想在项目之间切换的组合框。
问问题
438 次
1 回答
0
所以也许这就是你想要的,我也不知道你想要什么。这可以帮助你。如果您专注于组合框,则可以通过向上键或向下键在两个项目之间切换。
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;
}
所以我做的是。when one of the textboxes is selected and the user presses up or down then it toggles the content of the combobox. 此事件必须作为 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" />
有件事我忘了提。它仅在其中一个文本框被聚焦时才有效。如果您还有其他可以关注的项目,那么您必须为每个项目添加此事件,以确保无论现在关注哪些项目都会调用它。另一种可能性是创建一个键盘钩子。但这很复杂。
于 2012-08-29T11:38:27.843 回答