控件在 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();
}

这是我系统上的结果: