14

DateTimePicker更新されない形式のsがいくつかあります。
私は試しました、Valueそしてそしてまた... TextInvalidate()Update()Refresh()

現在の日付から値を変更するものはないようです。
私が何を設定しても、現在の日付は(比較的)今日のものです!

これは.NET3.5のバグですか、それとも何ですか?
(いいえ、このプロジェクトでは.NET 4を使用できません。)


本当にコードが必要な場合は、次のようになりますdateTimePicker1.Value = user.BirthDay;。また、私が書くMessageBox.Show(user.BirthDay.ToString());と、ユーザーの誕生日(私の誕生日、私のマシン上)を示す素敵なボックスが表示されます。(つまり、変数に値があります...)


また、それらは日付のみであり、時間ではないことにも言及する必要がありますか?


わかりました、私はもっと書く必要があると思います:

まず、コントロールが更新されるメソッドがForm.Loadイベントにサブスクライブされます。その結果、フォームとコントロールが表示されて「実行中」のときに呼び出され、起動され、呼び出されます。

次に、このコードとその結果を見てください。

MessageBox.Show(user.BirthDay.ToString()); // Shows 12.12.1995 (in my regional format)
dateTimePicker1.Value = user.BirthDay; // assigned to 12.12.1995
MessageBox.Show(dateTimePicker1.Value.ToString()); // Shows today's date!

それは良くありません...出力は今日の日付です。(今日とは、コードが実行された日を意味します。)

dateTimePicker1.MinDate = new DateTime(1900,1,1); // January 1st, 1900
MessageBox.Show(dateTimePicker1.MinDate.ToString()); // January 1st, 1753 ...

コントロールが悪い!1900年は1753年と同じではありません!

dateTimePicker1.MaxDate = DateTime.Today;
// In reality, I need it to today's date
MessageBox.Show(dateTimePicker1.MinDate.ToString()); // December 31st, 9998

タイムワープ?O_O

とにかく、コード全体は次のようになります。

public void Form_Load(object sender, EventArgs e)
{
    this.user = User.Load(path);
    // this.user is a field.
    // path is a static field which holds the absolute path of the file in which is serialized that data of the user.

    MessageBox.Show(user.BirthDay.ToString()); // Shows 12.12.1995 (in my regional format)
    dateTimePicker1.Value = user.BirthDay; // assigned to 12.12.1995
    MessageBox.Show(dateTimePicker1.Value.ToString()); // Shows today's date!

    dateTimePicker1.MinDate = new DateTime(1900,1,1); // January 1st, 1900
    MessageBox.Show(dateTimePicker1.MinDate.ToString()); // January 1st, 1753 ...

    dateTimePicker1.MaxDate = DateTime.Today;
    MessageBox.Show(dateTimePicker1.MinDate.ToString()); // December 31st, 9998
}

だから、何か解決策はありますか?xC

4

3 に答える 3

25

この問題に関する小さなヒント: 私の問題は、DateTimePicker を checked=false に設定し、(誤って) ShowCheckbox=false; に設定していたことです。このセットアップでは、任意の値を DTPicker に設定できましたが、それ自体は更新されません。

于 2011-01-28T22:13:07.683 に答える
1

フォームの外観が更新されていない場合の標準的な診断ですが、デバッガーでプロパティの更新が正常に表示されるのは、間違ったフォーム インスタンスを使用している場合です。たとえば、次のようにします。

var frm = new Form1();  // Wrong!!
frm.UpdateBirthDay(user.BirthDay);

次のようにコードを変更して、これを診断します。

dateTimePicker1.Value = user.BirthDay;
this.Show();   // <=== add this
于 2010-11-13T19:56:19.587 に答える