0

フォームの開始時に null 値を持つ必要がある radDateTimePicker があり、次のように設定しています。

 radDateTimePicker1.NullDate = new DateTime(1900, 1, 1);   
 this.radDateTimePicker1.DateTimePickerElement.SetToNullValue();

ボタンをクリックすると、ユーザーが1900年1月1日から日付を変更したかどうかを確認します.1900年1月1日のままであれば、変更を破棄しますが、問題は、ユーザーがその日付に開くピッカーを開いたときです1/ 1/1900 であり、ユーザーが 2013 年に到達するためにこれらすべての年をループさせるのは便利ではないため、nullDate を 1/1/2013 に変更して、ピッカーが 2013 年 1 月 1 日に開くようにしましたが、この日付がユーザーの目標日と私はそれを破棄しました。

要するに、1900年にピッカーが開かないようにするnull値が必要であり、ユーザーが値を変更していないことを知らせてくれるので、この値を破棄できます!?

4

3 に答える 3

1

私の理解が正しければ、アプリケーションの起動時に日時ピッカーに null 値を表示する必要があります。その場合は、SetToNull メソッド OnLoad を呼び出すだけです。

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        radDateTimePicker1.SetToNullValue();
    }

上記のメソッドを呼び出すと、NullableValueが null に設定され、コントロールの編集可能な部分には何も表示されません (そのようなNullTextが設定されるだけで、コントロールはフォーカスを失います)。コントロールを開くと、デフォルトで今日の日付になります。

于 2013-04-09T08:20:41.883 に答える
0

ShowCheckBoxピッカーの機能の使用を検討してください。

radDateTimePicker1.ShowCheckBox = true;

値を読み取るときは、次のように言うことができます。

var readInput = radDateTimePicker1.Checked
    ? radDateTimePicker1.Value : (DateTime?)null;
于 2013-04-07T08:32:54.723 に答える
0

簡単なクラスを使用して、ユーザーが変更できるすべてのデータをカプセル化し、フォームの「開始」データに初期化します。

次に、ユーザーがフォームの [OK] をクリックすると、現在のフォーム データがその単純なクラスの別のインスタンスに収集されます。

次に、2 つのクラスを比較して、何か変更があったかどうかを確認し、適切に対応します。

これは、個々のコントロールをいじるよりも柔軟で拡張性があると思います。これは、現在のユーザーが選択した設定、またはユーザーがまだ何も選択していない場合はデフォルト値のいずれかを使用して、すべてのデータ コントロールを設定できることを意味し、どちらの方法でも機能します。

于 2013-04-07T08:25:52.387 に答える