【问题标题】:Winforms: Remove "Today" from DateTimePickerWinforms:从 DateTimePicker 中删除“今天”
【发布时间】:2013-02-01 20:53:52
【问题描述】:

我正在尝试删除显示在 datetimepicker 控件底部的 Today 链接。 我发现了一个与代码类似的问题,但这似乎不起作用 - 我的转换是否存在问题或者此方法不再有效(Visual Studio 2012)?

Class MyDateTimePicker
Inherits DateTimePicker
Protected Overrides Sub OnHandleCreated(e As EventArgs)
    Dim style As Integer = CInt(SendMessage(Me.Handle, DTM_GETMCSTYLE, IntPtr.Zero, IntPtr.Zero))
    style = style Or MCS_NOTODAY Or MCS_NOTODAYCIRCLE
    SendMessage(Me.Handle, DTM_SETMCSTYLE, IntPtr.Zero, CType(0, IntPtr))
    MyBase.OnHandleCreated(e)
End Sub

Private Const DTM_FIRST As Integer = &H1000
Private Const DTM_SETMCSTYLE As Integer = DTM_FIRST + 11
Private Const DTM_GETMCSTYLE As Integer = DTM_FIRST + 12
Private Const MCS_NOTODAYCIRCLE As Integer = &H8
Private Const MCS_NOTODAY As Integer = &H10

<DllImport("user32.dll")> _
Private Shared Function SendMessage(hWnd As IntPtr, msg As Integer, wp As IntPtr, lp As IntPtr) As IntPtr
End Function
End Class

来源:How can I remove the "Today" button from DateTimePicker control (of Windows form Control)

【问题讨论】:

  • 不,在 VS2012 和 Win8 中仍然可以正常工作。但是,您没有正确复制代码。使用 CType(style, IntPtr),而不是 0。

标签: vb.net winforms visual-studio-2012 custom-controls


【解决方案1】:

您没有发送样式:

改变这个:

SendMessage(Me.Handle, DTM_SETMCSTYLE, IntPtr.Zero, CType(0, IntPtr))

到这里:

SendMessage(Me.Handle, DTM_SETMCSTYLE, IntPtr.Zero, CType(style, IntPtr))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多