控件在 vb 中不可用。网络窗口
Control not available in vb. Net winforms
我正在处理 vb 的旧项目。 Net.,创建于 3.5 框架。
有一个日期时间选择器控件。
但是,现在我又把这个控件掉了,但是我没有找到这个。用4.0控制,
那一年,它有Up/Down个箭头。
我想在单击下拉菜单时关注年份 selection。
如您所见,2015 年 10 月
当我 select 2015 时,它显示向上向下箭头以增加/减少年份。
帮我弄清楚,我怎样才能找到这个事件,selects/focus 今年控件显示时。
我正在修改这个问题以清除更多所需的功能。
你应该知道 DateTimePicker
的行为取决于 OS,如果你只想 select 年,你可以在设计器或代码中这样做:
- 将
Format
设置为DateTimePickerFormat.Custom
;
- 将
CustomFormat
设置为yyyy
;
- 将
ShowUpDown
设置为true
;
编辑
我们可以通过编程模拟点击年份部分,但它会在不同的 OS 上表现不同,这是不希望的。
但这里的主要思想可能对这种情况有用。
在这段代码中,我们将光标移动到合适的位置并使用代码执行点击:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
public void PerformClick()
{
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
//Don't forget to attach handler to DropDown event of your `DatePicker`
private void dateTimePicker1_DropDown(object sender, EventArgs e)
{
//wait to dropdown show
System.Threading.Thread.Sleep(500);
//Calculate the point that you want to click
//Change 125 and 5 to tune the location.
var p = new Point(
this.dateTimePicker1.Location.X + 125,
this.dateTimePicker1.Location.Y + this.dateTimePicker1.Height + 5
);
Cursor.Position = this.PointToScreen(p);
PerformClick();
}
这是我系统上的结果:
我正在处理 vb 的旧项目。 Net.,创建于 3.5 框架。 有一个日期时间选择器控件。
但是,现在我又把这个控件掉了,但是我没有找到这个。用4.0控制,
那一年,它有Up/Down个箭头。
我想在单击下拉菜单时关注年份 selection。 如您所见,2015 年 10 月 当我 select 2015 时,它显示向上向下箭头以增加/减少年份。
帮我弄清楚,我怎样才能找到这个事件,selects/focus 今年控件显示时。
我正在修改这个问题以清除更多所需的功能。
你应该知道 DateTimePicker
的行为取决于 OS,如果你只想 select 年,你可以在设计器或代码中这样做:
- 将
Format
设置为DateTimePickerFormat.Custom
; - 将
CustomFormat
设置为yyyy
; - 将
ShowUpDown
设置为true
;
编辑
我们可以通过编程模拟点击年份部分,但它会在不同的 OS 上表现不同,这是不希望的。
但这里的主要思想可能对这种情况有用。
在这段代码中,我们将光标移动到合适的位置并使用代码执行点击:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
public void PerformClick()
{
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
//Don't forget to attach handler to DropDown event of your `DatePicker`
private void dateTimePicker1_DropDown(object sender, EventArgs e)
{
//wait to dropdown show
System.Threading.Thread.Sleep(500);
//Calculate the point that you want to click
//Change 125 and 5 to tune the location.
var p = new Point(
this.dateTimePicker1.Location.X + 125,
this.dateTimePicker1.Location.Y + this.dateTimePicker1.Height + 5
);
Cursor.Position = this.PointToScreen(p);
PerformClick();
}
这是我系统上的结果: