难过的水龙头 · 焦点概述 - WPF .NET ...· 2 周前 · |
爱热闹的竹笋 · 在WPF/WinForm中启用控制台窗口_w ...· 2 周前 · |
年轻有为的茄子 · 《深入浅出WPF》学习总结之控件与布局 - ...· 2 周前 · |
俊逸的肉夹馍 · WPF 代码提示 “已多次设置属性Conte ...· 2 周前 · |
朝气蓬勃的面包 · Python ...· 8 月前 · |
被表白的小笼包 · LiveCharts.Wpf ...· 1 年前 · |
耍酷的咖啡豆 · 【Hive】【impala】解析json(g ...· 1 年前 · |
我试图在WPF中添加全局热键。
var helper = new WindowInteropHelper(this);
var handle = helper.Handle;
var source = HwndSource.FromHwnd(handle);
当我将这段代码放入
OnInitialized
重写方法中时,它返回
handle
变量的值
0
,并在
HwndSource.FromHwnd(handle)
中失败。
但是,当我把它放在
OnSourceInitialized
重写方法中时,它会为
handle
变量返回一些随机值,并在
HwndSource.FromHwnd(handle)
中工作得很好。
我只是想弄明白为什么会这样。
OnInitialized和OnSourceInitialized在WPF中有什么区别?
发布于 2019-02-12 09:13:04
初始化
FrameworkElement.Initialized
( WPF元素)时会引发
FrameworkElement
事件。
在这里的医生
每当调用
EndInit
或OnVisualParentChanged
方法时,都会引发此事件。对这两种方法的调用可能来自应用程序代码,或者在处理XAML页面时通过可扩展应用程序标记语言(XAML)处理器行为调用。
此事件是在处理XAML树时引发的。它可以为任何
FrameworkElement
(包括
Window
)引发。
当基础
Window.SourceInitialized
窗口句柄可用时,将引发Win32事件。它只在
Window
上提出。您可以在
文档
中阅读更多内容。
这就是为什么在
Window.SourceInitialized
事件处理程序中获得有效句柄而在
FrameworkElement.Initialized
事件处理程序中获得无效句柄(0)的原因。
https://stackoverflow.com/questions/54646062
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287