DateTimePickers に多くのフラストレーションを抱えている... まず、私のセットアップについて説明させてください。私は 2 組の DateTimePicker を持っています。1 は From Date (MM/dd/yyyy 形式) で、そのペアは From Hour (HH 形式および ShowUpDown = true) です。もう 1 つのペアは、To Date と To Hour を除いて同一です。彼らが従わなければならない規則がいくつかあります。
- From ピッカーの MaxDates は、To ピッカーの MaxDates を超えることはできません
- To ピッカーが選択した日 (ToDatePicker) が現在の日付である場合、両方の MaxDates が DateTime.Now.AddHours(1) である必要があります。このようにして、ユーザーは「現在の」時間を検索できます...例: 現在が 4/2/13 10:18 PM の場合、To ピッカー ペアの MaxDate は 4/2/13 11:00 PM である必要がありますであるため、ユーザーは From ピッカー ペアの値を 4/2/13 10 PM に、To ピッカー ペアの値を 4/2/13 11 PM に設定して、午後 10 時の 18 分を検索できるようにします。
もっとあると確信していますが、私は疲れ果てています. 私は次のようないくつかのトリッキーな DataBindings でこれを達成しようとしました:
コンストラクターで:
FromDatePicker.DataBindings.Add(new Binding("MaxDate", ToHourPicker, "MaxDate"));
ToDatePicker.DataBindings.Add(new Binding("MaxDate", ToHourPicker, "MaxDate"));
FromHourPicker.DataBindings.Add(new Binding("Value", FromDatePicker, "Value"));
ToHourPicker.DataBindings.Add(new Binding("Value", ToDatePicker, "Value"));
DateTime dt = DateTime.Now.Subtract(new Timespan(0, 0, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond));
DateTime plusOne = dt.AddHours(1);
FromDatePicker.MaxDate = dt;
FromHourPicker.MaxDate = dt;
ToDatePicker.MaxDate = plusOne;
ToHourPicker.MaxDate = plusOne;
In MainForm Load イベント
FromDatePicker.Value = FromDatePicker.MaxDate;
FromHourPicker.Value = FromDatePicker.MaxDate;
ToDatePicker.Value = ToDatePicker.MaxDate;
ToHourPicker.Value = ToHourPicker.MaxDate;
その設定では、実際にFromDatePicker.Value = FromDatePicker.MaxDate;
はエラーメッセージの行で失敗しますが、その行でValue of <current day & hour> is not valid. Value should be between MinDate and MaxDate
FromDatePickerにマウスを合わせると、MaxDateが同じであると表示され<current day & hour>
ます....
私は非常に混乱しており、得たものを改善することにオープンです。または、同じ効果を達成するためのより簡単な方法を考えられる場合は、それらの提案も聞きたいです:P. さらに必要な場合はお知らせください