ThangamSundar Ответов: 1

Как использовать API sendmessage для установки минимальной и максимальной даты в VB.NET


Привет , я хочу установить минимальную и максимальную дату datetimepicker из выбранного года.

заранее спасибо

Что я уже пробовал:

мой код:
Public Structure SYSTEMTIME
        Dim wYear As Integer
        Dim wMonth As Integer
        Dim wDayOfWeek As Integer
        Dim wDay As Integer
        Dim wHour As Integer
        Dim wMinute As Integer
        Dim wSecond As Integer
        Dim wMilliseconds As Integer

    End Structure

    Public Declare Function SendMessage Lib "user32.dll" _
                         Alias "SendMessageA" _
                         (ByVal hWnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Integer, ByVal lParam As SYSTEMTIME) As IntPtr
    Public Const DTM_SETRANGE = &H1004&
    Public Const GDTR_MIN = 1
    Public Const GDTR_MAX = 2

  Dim TimeArray(1) As SYSTEMTIME
        Dim result As IntPtr
        'Dim trdt As Date

        ' Define first minimum date.
        TimeArray(0).wDay = Format(dt, "dd")
        TimeArray(0).wMonth = Format(dt, "MM")
        TimeArray(0).wYear = Format(dt, "yyyy")

        ' Define second maximum date.
        TimeArray(1).wDay = Format(Dt1, "dd")
        TimeArray(1).wMonth = Format(Dt1, "MM")
        TimeArray(1).wYear = Format(Dt1, "yyyy")

        result = SendMessage(Me.dtpFrom.Handle, DTM_SETRANGE,
   GDTR_MIN + GDTR_MAX, TimeArray(0))

Его показывающая ошибка "попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена

1 Ответов

Рейтинг:
0

Richard Deeming

Почему? Класс элемента управления datetimepicker [^] уже быть MaxDate[^] и MinDate[^] собственности. Просто используй их.

Me.dtpFrom.MinDate = dt
Me.dtpFrom.MaxDate = dt1