wpf - Wpf窗口标题栏鼠标活动
问题描述
我正在尝试在窗口标题栏上获取事件(对于标准 wpf 窗口)。
一个简单的鼠标按下事件(无论按钮如何)就足够了。这个想法是,当用户在控件外部单击时,我想对自定义控件(包含文本框)执行操作。
现在我正在向控件添加两个事件处理程序以帮助实现这一点:UIElement.IsKeyboardFocusWithinChanged 和 Window.PreviewMouseDown。它与这两个事件几乎完美配合,除非用户单击窗口标题栏,因为这两个事件都没有被触发......
有任何想法吗 ?谢谢
解决方案
您可以使用以下代码检查是否单击了窗口边框:
private const int WM_NCLBUTTONDOWN = 0x00a1;
// added after window loaded
HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
source.AddHook(new HwndSourceHook(WndProc));
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch (msg)
{
case WM_NCLBUTTONDOWN:
// your action
break;
}
return IntPtr.Zero;
}
推荐阅读
- mysql - Mysql 显示 #1222 - 使用的 SELECT 语句有不同的列数
- bash - 如何使用分隔符保存 Zenity 列表输出?
- cgroups - 是否可以将 cpu.shares 与 cpu.cfs_quota_us 一起使用
- dialogflow-es - 如何在 Dialogflow 上传的 CSV 文件中转义逗号?
- php - 如何在创建表时创建外键
- browser - 如何从开发者工具中查看浏览器本地存储中存储的 Json 对象
- c - 如何声明 volatile 结构的 C 数组
- c++ - 确定一个数组是否可以划分为两个子序列,每个子序列都具有递增的顺序
- python - Concatenate Pandas dataframe preferentially
- perl - 模板工具包:如何从 MACRO BLOCK 返回哈希