0

DateTimePickers に多くのフラストレーションを抱えている... まず、私のセットアップについて説明させてください。私は 2 組の DateTimePicker を持っています。1 は From Date (MM/dd/yyyy 形式) で、そのペアは From Hour (HH 形式および ShowUpDown = true) です。もう 1 つのペアは、To Date と To Hour を除いて同一です。彼らが従わなければならない規則がいくつかあります。

  1. From ピッカーの MaxDates は、To ピッカーの MaxDates を超えることはできません
  2. 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 MaxDateFromDatePickerにマウスを合わせると、MaxDateが同じであると表示され<current day & hour>ます....

私は非常に混乱しており、得たものを改善することにオープンです。または、同じ効果を達成するためのより簡単な方法を考えられる場合は、それらの提案も聞きたいです:P. さらに必要な場合はお知らせください

4

2 に答える 2

0

DateTime dt = DateTime.Now.Subtract(new Timespan(0, 0, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond));

可能性のすべての喚起DateTime.Nowは、異なる値です。時は進みます。これを行う必要があります:

    DateTime now = DateTime.Now;
    DateTime dt = now.Subtract(new Timespan(0, 0, now.Minute, now.Second, now.Millisecond));

次に、そのナンセンスをすべて忘れて、Dateプロパティを使用します。

DateTime dt = now.Date;   // time component is set to 00:00:00
DateTime plusOne = now.AddHours(1);

その設定では、実際には FromDatePicker.Value = FromDatePicker.MaxDate;で失敗します。Value of is not valid というエラー メッセージのある行。値は MinDate と MaxDate の間である必要があります。

これで問題が解決する場合があります

于 2013-04-03T04:49:11.843 に答える