1.声明
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern long SendMessage(IntPtr hWnd, uint Msg, uint wParam, long lParam);
const int WM_SYSKEYDOWN = 0x0104, VK_DOWN = 0x28;
2.调用
SendMessage(Control.Handle, WM_SYSKEYDOWN, VK_DOWN, 0);
20090629 通用调用小箭头
(上面的在微软提供的控件中测试通过,但第三方控件有的不行,建议用以下方式)
基本思想为:移动鼠标到下拉箭头的位置,然后再按下鼠标左键,最后把鼠标移动回原来的位置
代码如下:
//发送鼠标按下事件
[System.Runtime.InteropServices.DllImport("user32")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
//设置鼠标位置
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
//鼠标事件标识
[Flags]
enum MouseEventFlag : uint
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
VirtualDesk = 0x4000,
Absolute = 0x8000
}
//调用方式
Point mousePoint = MousePosition;
int X = this.Location.X+this.Width-5, Y = this.Location.Y+this.Height-5; //坐标
Point p = new Point(0, 0);
p.X = this.Width - (SystemInformation.VerticalScrollBarWidth / 2);
p.Y = this.Height - (SystemInformation.HorizontalScrollBarHeight / 2);
p = PointToScreen(p);
SetCursorPos(p.X, p.Y);
mouse_event(MouseEventFlag.LeftDown, p.X, p.Y, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, p.X, p.Y, 0, UIntPtr.Zero);
SetCursorPos(mousePoint.X, mousePoint.Y);
欢迎提供更好的解决方法
代码调用控件右边的小箭头 应用于 DateTimePicKer Comobox
最新推荐文章于 2021-06-27 17:50:44 发布