私は自分自身のMonthCalendarを作成しました(複数のものを選択し、さらに変更を加えました)、DateTimePickerで使用したいと思います。 DateTimePickerを取り、右ボタンをクリックするとカスタムカレンダーが表示されます。簡単な方法はありますか?または、このチュートリアルのように自分自身で作成する必要があります。http://www.techpowerup.com/forums/showthread.php?t=70925 ありがとうC#DateTimePicker change MonthCalendar
答えて
これは少しハックですが、うまくいくはずです。
まず、OnSizeChangedのボタン、アイコン(アイコン付き)、アイコン(アイコンなし)を確認します。ボタンの大きなボタンに35ピクセルのボタンがある場合、小さなボタンは18ピクセルです。
次に、ウィンドウのメッセージを聞きます。 mousedownが発生した場合は、ユーザーがクリックした場所を確認します。したがって、lParamをX/Yロケーションに変換します。 X位置がボタン領域にある場合は、カスタムメソッドに移動してカレンダーを表示します。メソッドの後、メソッドから戻るか、DateTimePickerにも独自のカレンダーが表示されます。
さらに、ShowUpDownプロパティを参照可能に設定します(false)。しかし、ShowUpDownがtrueであるかどうかをチェックして、このケースでDateTimePckerがクリックを処理できるようにすることもできます。ここで
コードです:
class DateTimePickerEX : DateTimePicker {
const int WM_MOUSEDOWN = 0x201;
int paddingright = 0;
protected override void OnSizeChanged(EventArgs e) {
base.OnSizeChanged(e);
int textwidth = 0;
using (Graphics g = this.CreateGraphics()) {
textwidth = (int)g.MeasureString(this.Text, this.Font).Width;
}
if (textwidth > this.Width - 35 - 22) {
paddingright = 18;
} else {
paddingright = 35;
}
}
protected override void WndProc(ref Message m) {
if (m.Msg == WM_MOUSEDOWN) {
DWORD dw = new DWORD(m.LParam);
int x = dw.HI;
int y = dw.LO;
if (x > this.Width - paddingright) {
OnButtonClick();
return;
}
}
base.WndProc(ref m);
}
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public new bool ShowUpDown {
get;
set;
}
private void OnButtonClick() {
//-----------------------------------
//#### Show your MonthCalendar ####
//-----------------------------------
}
[StructLayout(LayoutKind.Explicit)]
struct DWORD {
[FieldOffset(0)]
public int Word;
[FieldOffset(0)]
public short HI;
[FieldOffset(2)]
public short LO;
public DWORD(IntPtr word) {
this.HI = 0;
this.LO = 0;
this.Word = (int)word;
}
public static DWORD Empty {
get {
return new DWORD() {
Word = 0
};
}
}
}
}
私はあなたがmonthcalendarを見せて私を助けることができますか?私はthis.Controls.Add(カレンダー)によってそれをやっています。それはdatepickerの小さなテキストボックスです。私はそれが形ではないので、私は実際にその小さなウィンドウにコントロールを追加することです知っているどのように私はちょうどそれrigthを示すことができます –
私はそれがthis.Parent ... –
元のmonthcalendar(neseccary/requiredの場合はフォームの外にもmonthcalendarを表示し、ユーザーが別の場所をクリックした場合は非表示)と同じ動作が必要な場合はコントロールに渡します。 ToolStripDropDownを使用し、ToolStripControlHostでMonthCalendarを追加することができます。他の方法は、グローバルなフックとフォーカスを盗むことなく独自のフォームを作成することです。 – Wowa
- 1. C#では、monthCalendarのアップデート!
- 2. C#DateTimePicker
- 3. C#WinForms DateTimePickerコンポーネント
- 4. のDateTimePicker C#
- 5. DatetimePickerソートC#
- 6. C#xceed DateTimePicker
- 7. C#TabControl TabPage Change
- 8. C#telerik Winforms DateTimePicker Calendarサイズ
- 9. C#Change AD password Directoryservices
- 10. MonthCalendarのDateChangedイベントの問題
- 11. C#DateTimePicker - 太字の日付?
- 12. C#DateTimePickerフォーカスフィールドを取得
- 13. C#WinForms MonthCalendarコントロール - カスタマイズ可能な日付範囲?
- 14. Unity - change image onClickボタン(C#)
- 15. c#change pictureBox DataBinding on click
- 16. Wpf C#Change checkbox comboboxitem color + disable
- 17. C#でdatetimepickerの無効な値をトラップ
- 18. C#DateTimePicker DataBindingパースイベントが機能しない
- 19. 他のdatetimepicker winformsのDateのselectでdatetimepickerのカレンダーを開きます。C#
- 20. Meteorjs semantic ui datetimepicker変更イベント
- 21. ggplot2 change line type
- 22. Angular2 change node_modules path
- 23. datetimepickerモバイルでネイティブdatetimepickerを使用
- 24. Datetimepickerエラー
- 25. DateTimePickerデータバインディング
- 26. のDateTimePicker
- 27. DateTimePickerは値のフィールドを更新しないでください.ChangeまたはonSelect
- 28. Wix change exeインストーラアイコン
- 29. MonthCalendarコントロール - ifステートメントを使用してヘルプが必要
- 30. 私のMonthCalendarでBoldedDatesを取得するには?
あなたはどのようなUI言語を使用していますか? WPF? Silverlight? ASP.net? ASP.net MVC? WinForms? – ForbesLindesay
申し訳ありません、私はそれを追加することを忘れました。それはWinforms –
私は、WinFormsで最初からやり直したいと思っていますが、DateTimePickerが封印されていない場合、視覚的な継承を使用することでやや頭を上げられるかもしれません。 – ForbesLindesay