Combobox的下拉列表区

strongest 2010-05-03 09:46:25
...
IntPtr handle= WindowFromPoint(Control.MousePosition);
...


当鼠标在combobox的下拉列表区时,得到的handle并不是其父窗体的handle,这是为何?高手给点资料何如?
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzx509 2010-05-03
  • 打赏
  • 举报
回复

[DllImport("user32.dll")]
public static extern IntPtr GetActiveWindow();

用这个得到的是当前活动窗口的句柄。也就是你要的combobox所在的窗体的句柄。
strongest 2010-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzx509 的回复:]
下拉列表区是Combobox内置的NativeWindow,本地化窗口。
[/Quote]
怎么样通过这个NativeWindow的handle得到combobox的父窗口的handle?
strongest 2010-05-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll")]
public static extern IntPtr GetParent(IntPtr hWnd);
private void timer1_Tick(o……
[/Quote]

这样貌似得不到combobox父窗口的handle
zzx509 2010-05-03
  • 打赏
  • 举报
回复
下拉列表区是Combobox内置的NativeWindow,本地化窗口。
wuyq11 2010-05-03
  • 打赏
  • 举报
回复
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll")]
public static extern IntPtr GetParent(IntPtr hWnd);
private void timer1_Tick(object sender, EventArgs e)
{
IntPtr vHandle = WindowFromPoint(Control.MousePosition);
while (vHandle != IntPtr.Zero && vHandle != Handle)
vHandle = GetParent(vHandle);
}
abcdef1111111 2010-05-03
  • 打赏
  • 举报
回复
不懂,帮顶

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧