C# 在WPF中通过按某个键从控制切换到控制
我需要通过按enter键实现从文本框到文本框、按钮到文本框等的切换,所以我想知道是否有一些简单的方法可以做到这一点,比如它是WIN表单,更改属性,如优先级1、2、3、4,当用户按enter键时,控件将按数字从低到高进行切换 在wpf中,我找不到那个解决方案,但我找到了这个,所以我想知道它可以吗 这是我的密码:C# 在WPF中通过按某个键从控制切换到控制,c#,wpf,textbox,grid,switching,C#,Wpf,Textbox,Grid,Switching,我需要通过按enter键实现从文本框到文本框、按钮到文本框等的切换,所以我想知道是否有一些简单的方法可以做到这一点,比如它是WIN表单,更改属性,如优先级1、2、3、4,当用户按enter键时,控件将按数字从低到高进行切换 在wpf中,我找不到那个解决方案,但我找到了这个,所以我想知道它可以吗 这是我的密码: private void Grid_PreviewKeyDown_1(object sender, KeyEventArgs e) { try
private void Grid_PreviewKeyDown_1(object sender, KeyEventArgs e)
{
try
{
if (e.Key == Key.Enter)
{
TextBox s = e.Source as TextBox;
if (s != null)
{
s.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
else
{
ComboBox cb = e.Source as ComboBox;
if (cb != null)
{
cb.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
else
{
Button b = e.Source as Button;
if (b != null)
{
b.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
}
e.Handled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我的控件包含在网格中
谢谢各位
干杯 由于
网格
的所有子元素共享相同的基类(UIElement
),您应该能够稍微简化代码:
private void Grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
UIElement element = e.Source as UIElement;
element.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
这是可行的,但不是从上到下随意切换控件,而是在我的控件上随机上下跳跃?您可以通过设置控件的TabIndex属性来控制顺序: