geo*_*rge 4 c# wpf events focus setfocus
嗨,我无法将注意力集中在控制之父上.我有一个放在画布上的控件.如果我单击该控件,我需要在画布上设置焦点以处理一些键盘事件.尽管事实上我试图像这样设定焦点
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
base.OnPreviewMouseDown(e);
Canvas designer = VisualTreeHelper.GetParent(this) as Canvas;
designer.Focus() ;//this doesn't work
Keyboard.Focus(designer); //this also doesn't work
}
Run Code Online (Sandbox Code Playgroud)
附加到画布的键盘事件不会触发.
Ree*_*sey 12
确保Canvas的Focusable和IsEnabled都设置为true.没有它,Focus()将失败.来自Focus()文档:
要成为焦点,Focusable和IsEnabled必须都是真的.
此外,由于您在PreviewMouseDown事件中执行此操作,因此可能需要按如下方式重新编写方法:
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
Canvas designer = VisualTreeHelper.GetParent(this) as Canvas;
designer.Focus() ;//this doesn't work
Keyboard.Focus(designer); //this also doesn't work
// Just in case something else is changing your focus as a result of a mouse event...
e.Handled = true;
base.OnPreviewMouseDown(e);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13872 次 |
| 最近记录: |