请参考下面的截图:
日期时间控件是紧凑框架 DateTimePicker,编号按钮是标准按钮控件。
单击 DateTimePicker 的箭头将显示一个日历控件,允许用户选择日期。但是,如果用户单击所选文本日期的任何部分,该部分就会突出显示,并且可以使用硬键或屏幕键盘进行修改。我正在尝试用我的标准按钮模拟此功能。
我已经尝试过以下方法,但目前这只会导致 DateTimePicker 失去焦点。
const int KEYEVENTF_KEYUP = 0x2;
const int KEYEVENTF_KEYDOWN = 0x0;
const int VK_NUMPAD1 = 0x61;
private void digitButton_Clicked(object sender, EventArgs e)
{
keybd_event(VK_NUMPAD1, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(VK_NUMPAD1, 0, KEYEVENTF_KEYUP, 0);
}
[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event
(
byte bVk,
byte bScan,
int dwFlags,
int dwExtraInfo
);
我认为您指出了您的问题,“...但目前这只会导致 DateTimePicker 失去焦点”。我怀疑你的按钮正在获得焦点,因此消耗了击键次数。您可以尝试在生成击键之前将焦点设置到 DateTimePicker。如果失败,作为最后的手段,您可以使用 SendMessage() 将控件硬编码到 DateTimePicker 的窗口句柄,并使用 WM_KEYDOWN、WM_KEYUP。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)