- 題名: 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イベントを使用してみましたが、この場合日付の選択をしなくても発生してしまいます。
もしよい方法がありましたらご教授よろしくお願いいたします。