0

私は次の日付ピッカーを持っています:

<xctk:DateTimePicker HorizontalAlignment="Right" Margin="0,23,671,0" Name="datepicker" VerticalAlignment="Top" Width="120" Height="49" BorderBrush="Black" Cursor="Hand" ValueChanged="dateTimePicker1_ValueChanged" />

ご覧のとおり、コンポーネントには valueChanged イベントがあります。イベント コードは次のようになります。

    private void dateTimePicker1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{

    DateTime date = (DateTime)datepicker.Value;
    datepicker.Text = date.Date.ToString();
    UpdateDateLabels(date);
}

private void UpdateDateLabels(DateTime date) 
{
    dstart.Content = date.Date.ToShortDateString();

    switch (datebox.SelectedIndex) 
    {
        case 0:
            date.AddDays(1);
            break;
        case 1:
            date = date.AddDays(7);
            break;
        case 2:
            date = date.AddMonths(1);
            break;
        case 3:
            date = date.AddYears(1);
            break;
        default:
            break; 
    }
    MessageBox.Show(datebox.SelectedValue.ToString());
    dend.Content = date.Date.ToShortDateString();

}

ご存知の方もいらっしゃると思いますが、datepicker は次のようになります。

デートピッカー

矢印キー(上下)をクリックすると、すべてが正常に機能します。ただし、ボタンをクリックしてカレンダーを表示すると、実際には変更せずに changedevent が既に発生しています (次のエラーが発生する前にカレンダーを表示することさえできません)。

エラー

なぜこれが起こっているのか誰にも教えてもらえますか?

4

2 に答える 2

1

を確認してくださいOriginalSource

これを試して:

private void dateTimePicker1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    if (e.OriginalSource is Xceed.Wpf.Toolkit.DateTimePicker)
    {
        DateTime date = (DateTime)datepicker.Value;
        datepicker.Text = date.Date.ToString();
        UpdateDateLabels(date);
    }
}
于 2013-07-29T13:43:19.350 に答える