获取numericupdown&# 39;s编辑部分的句柄

本文关键字:编辑部 句柄 numericupdown 获取 | 更新日期: 2023-09-27 18:15:59

NumericUpDown有两个手柄/控件:外部旋转框和内部编辑文本框控件。

我需要得到内部文本框控件的句柄。NumericUpDown.Handle给出外部句柄。

我在谷歌上找到的最接近的是这个论坛的对话。技巧是使用UDM_GETBUDDY = WM_USER+106 = 0x0400+106消息,它返回好友窗口的句柄,在我们的例子中是文本编辑。

最初的输出是这样的:

control.Capture = true;
IntPtr outer = User32.GetCapture();
IntPtr inner = new IntPtr(User32.SendMessage(outer, (0x0400 + 106), 0, 0));

但是OP说这不起作用,所以有人建议使用GetWindow(outer, GW_CHILD)。where GW_CHILD = 5

control.Capture = true;
IntPtr outer = User32.GetCapture();
IntPtr inner = User32.GetWindow(outer, 5);

对于这两种方法,我总是以inner = 0结束,这显然不是正确的答案。然而,OP声明的方法2似乎工作,所以我可能做错了什么。

顺便说一下,"捕获"机制似乎是无用的,因为我可以简单地使用:
IntPtr outer = control.Handle;

返回相同的值。

那么,关于如何获得内部文本框句柄有什么想法吗?

获取numericupdown&# 39;s编辑部分的句柄

在Winforms中实现非常不同,没有伙伴控件。获取对文本框部分的引用很容易做到,尽管它违反了一些封装规则。这不是问题,NumericUpDown被冻结在时间里,永远不会改变。

        var box = (TextBox)numericUpDown1.Controls[1];

注意查看TextBox控件的属性,并不是所有的事件都被实现了