- 題名: DateTimePickerのカレンダークリック
- 日時: 2005/06/24 18:39:55
- ID: 11466
- この記事の返信元:
- (なし)
- この記事への返信:
- [11470] Re[1]: DateTimePickerのカレンダークリック2005/06/25 0:43:20
- ツリーを表示
> 検索条件の入力用に使用していますが、日付を設定したい場合とそうでない場合があるため、
ということでしたら、 ShowCheckBox / Checked プロパティを利用するだけで良いのでは‥‥?
#それともエンドユーザから別の形をという要望でもあったのでしょうか?
> API関数を使用する、ということでしょうか?
いえ、前者の方法で良ければ API を使用する必要はありません。
> ネットで検索してみたのですが、DTN_DATETIMECHANGEの具体的な使用方法がわかりませんでした。
> もし参考になるサイトなどございましたら教えていただけないでしょうか?
えっと、『DTN_DATETIMECHANGE』をキーワードに Google で(ウェブ全体から)検索したとき
最初にヒットする『猫でもわかるプログラミング』、そして二番目にヒットする『MSDN Library』が
参考になると思うのですけど‥‥厳しいでしょうか?(^_^;)
#『WM_NOTIFY』をキーワードに過去ログ検索すると他の通知メッセージを扱ったものが‥‥
#って、それでもやっぱりキツイですよね(汗)
簡単なサンプルを下記します。参考になれば幸いです。
#フォーム上に直接 DateTimePicker1 配置してください。
Private Structure NMHDR
Public hwndFrom As IntPtr
Public idFrom As Integer
Public code As Integer
End Structure
Private Structure NMDATETIMECHANGE
Public nmhdr As NMHDR
Public dwFlags As Integer
Public st As SYSTEMTIME
End Structure
Private Structure SYSTEMTIME
Public wYear As Short
Public wMonth As Short
Public wDayOfWeek As Short
Public wDay As Short
Public wHour As Short
Public wMinute As Short
Public wSecond As Short
Public wMilliseconds As Short
End Structure
Private Const WM_NOTIFY As Integer = &H4E
Private Const DTN_FIRST As Integer = (0 - 760)
Private Const DTN_DATETIMECHANGE As Integer = (DTN_FIRST + 1)
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NOTIFY AndAlso m.WParam.Equals(Me.DateTimePicker1.Handle) Then
Dim nmh As NMHDR = CType(m.GetLParam(nmh.GetType()), NMHDR)
If nmh.code = DTN_DATETIMECHANGE Then
Dim nmdate As NMDATETIMECHANGE = _
CType(m.GetLParam(nmdate.GetType()), NMDATETIMECHANGE)
Console.WriteLine("{0}/{1}/{2}", _
nmdate.st.wYear, nmdate.st.wMonth, nmdate.st.wDay)
End If
End If
MyBase.WndProc(m)
End Sub
分類:[.NET]
いつも参考にさせて頂いています、よろしくお願いします。
DateTimePickerを使用しています。
コントロールの右端をクリックして表示されるカレンダー上の日付を選択(クリック)して閉じたのか、日付の選択なしで閉じたのか(他のコントロールをクリックした等)の情報がほしいのですがどのようにしたらよいのかわかりません。
最初ValueChangedイベントを使用しようと思ったのですが、カレンダーを開く前のValueと同じ日付をクリックした場合にValueChangedイベントが発生してくれません。
次にCloseUpイベントを使用してみましたが、この場合日付の選択をしなくても発生してしまいます。
もしよい方法がありましたらご教授よろしくお願いいたします。