DateTimePickerコントロールで、ドロップダウンボタンをクリックすると、カレンダーが表示されます。カレンダーの下部にボタンがあります:今日、クリックすると、現在の日付を選択した日付として設定します。そのボタンをコントロールから削除/非表示にしたい。どうすればいいですか?
質問する
3850 次
2 に答える
12
ネイティブのWindowsDateTimePickerコントロールは、月間カレンダーのスタイルを設定するためのDTM_SETMCSTYLEメッセージをサポートしています。コントロールの作成時にメッセージを送信し、デフォルトのスタイルを変更するには、ちょっとしたピンボークが必要です。プロジェクトに新しいクラスを追加し、以下に示すコードを貼り付けます。コンパイル。ツールボックスの上部からフォームに新しいコントロールをドロップし、古いコントロールを置き換えます。
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
class MyDateTimePicker : DateTimePicker {
protected override void OnHandleCreated(EventArgs e) {
int style = (int)SendMessage(this.Handle, DTM_GETMCSTYLE, IntPtr.Zero, IntPtr.Zero);
style |= MCS_NOTODAY | MCS_NOTODAYCIRCLE;
SendMessage(this.Handle, DTM_SETMCSTYLE, IntPtr.Zero, (IntPtr)style);
base.OnHandleCreated(e);
}
//pinvoke:
private const int DTM_FIRST = 0x1000;
private const int DTM_SETMCSTYLE = DTM_FIRST + 11;
private const int DTM_GETMCSTYLE = DTM_FIRST + 12;
private const int MCS_NOTODAYCIRCLE = 0x0008;
private const int MCS_NOTODAY = 0x0010;
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
Windows 7では、実行時に次のようになります。
于 2012-06-06T20:11:05.057 に答える
0
少し前に自分でこのコントロールを変更したいと思っていたのですが、それが不可能であることに気付いたのを覚えているようです。解決策は、独自のカスタムコントロールを構築することでした。
それが役立つ場合は、派生したDateTimePickerクラスを使用して[カスタムカレンダーを表示する]ドロップダウンを見つけました。これは、カスタムWinformsカレンダーCulture AwareMonthCalendarおよびDatePickerにリンクしています。
于 2012-06-06T19:09:30.373 に答える