質問

事実:

  • 2つのタブを持つTabControlがあり、各タブには2つのDateTimePickerがあります。
  • Loadイベントで、すべてのDTPの値を設定します。
  • すべてのDTPのShowCheckBoxesはtrueに設定され、Checkedはfalseに設定されています。
  • プログラムを実行すると、最初のタブのDTPは問題ありませんが、2番目のタブでDTPを確認すると、ロードイベントに設定した時間ではなく現在の時間が表示されます。

これはなぜ起こるのですか?どうすれば回避できますか?

役に立ちましたか?

解決 3

この問題に対する私のい回避策は、値を変更する前にDTPが存在するタブをアクティブに設定することです。次のようになります。

DateTime dat1 = DateTime.Today;
DateTime dat2 = dat1.AddDays(1).AddSeconds(-1);

dtpCreatedStart.Value = dat1;
dtpCreatedEnd.Value = dat2;
tbc.SelectTab(1);
dtpModifiedStart.Value = dat1;
dtpModifiedEnd.Value = dat2;
tbc.SelectTab(0);

他のヒント

ここで問題が何であるかがわかりました。

Value プロパティは、 DateTimePicker コントロールが表示されている場合にのみ新しい値を設定します。それ以外の場合、コマンドは無視されます。

テストケース:

機能しない:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Value = this.picker.Value.Date.AddHours(1);
        this.picker.Visible = true;

作品:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Visible = true;
        this.picker.Value = this.picker.Value.Date.AddHours(1);

ピッカーをプログラム的に追加することとは関係がないようです。

datetimepickerのCheckedプロパティに関係しています。通常はfalseに設定されます。少なくとも私にとっては問題でした。

datetimepicker.checkedをtrueに設定した後、設定から値を取得しました。

DateTimePickerには、その値の保存と取得に関する問題がいくつかあります。 Valueをnullを許可しないDateTimeにバインドするときに問題が発生しました-NullReferenceExeptionsを時々取得しました。なぜ、いつかわからない。たまに起こってアプリをクラッシュさせたことがありました。

2つのDateTimePickerを使用して同じ問題に遭遇しました。それらを動的に生成してフォームに追加することで、両方に正しい値を表示させることができました。

機能しない場合は、いつでも別のピッカーを使用してみてください。 Any + Time(TM)Datepicker / Timepicker AJAXカレンダーウィジェットは、関連するフィールドから値を取得します。そのため、フィールドを値で初期化するか、フィールドを変更して値を持つようにすると(onloadなど)、ピッカーが表示されたときにそれが得られます。問題が発生した場合は、連絡先ページからメッセージを送信してください。すぐに対処されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top