如何解决C#失去焦点而没有使用控制事件
| 有一种方法可以让谁以c#形式失去焦点,而不必使用每个组件的LostFocus事件? [编辑] 我需要屏幕键盘。 我需要存储最后集中的控件来触发按键,但是我需要对窗口中的所有控件进行操作。 另外主要的项目是wpf,比我有一些组件嵌套为itemsTemplate等。解决方法
我终于用了这个:
foreach (Control uie in FindInLogicalTreeDown(this,typeof(TextBox))) AssignEvents(uie);
private static IEnumerable<DependencyObject> FindInLogicalTreeDown(DependencyObject obj,Type type)
{
if (obj != null)
{
if (obj.GetType() == type) { yield return obj; }
foreach (object child in LogicalTreeHelper.GetChildren(obj))
if (typeof(DependencyObject).IsAssignableFrom(child.GetType()))
foreach (var nobj in FindInLogicalTreeDown((DependencyObject)child,type)) yield return nobj;
}
yield break;
}
void AssignEvents(Control element)
{
element.GotMouseCapture += new MouseEventHandler(Component_GotFocus);
}
public Control LastFocus { get; set; }
public void Component_GotFocus(object sender,RoutedEventArgs e)
{
LastFocus = (Control)sender;
if (LastFocus.GetType() == typeof(TextBox)) { KeyboardVisible = true; }
}
,我认为除非您订阅事件并跟踪哪个失焦事件最后触发,否则我将没有任何办法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。