0

時間ボタンまたは分ボタンをクリックするたびに、テキストボックスに値が入力され、24 時間形式でボタンをクリックするたびに時間が 1 ずつ増えます。分ボタンも同様です。現在、反復は行われておらず、1 回だけ増加しています。

private void Cld_SelectedDateChanged(object sender,vhCalendar.SelectedDateChangedEventArgs e)
{
    textBox1.Text = e.NewDate.ToString();
    txtHH.Text = DateTime.Now.Hour.ToString();
    txtMM.Text = DateTime.Now.Minute.ToString();
}

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    txtHH.Text = DateTime.Today.AddHours( 1 ).ToString("HH");
}

private void btnAddMinute_Click( object sender, RoutedEventArgs e )
{
    txtMM.Text = DateTime.Today.AddMinutes( 1 ).ToString( "mm" );
}
4

3 に答える 3

3

current dateクリックするたびに 1 を追加しています。コードを見ると、テキスト ボックスの現在の日付の値に 1 を追加する必要がありますがDateTime.Today、クリックするたびに何度も追加しています。

したがって、tryparse空でない場合はテキスト ボックスの現在の値、それ以外の場合は現在の日付に設定され、この値に分/時間が追加されます。

例えば、こんな感じになります...

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    DateTime curDate;
    DateTime.TryParse(txtHH.Text, out curDate);
    txtHH.Text =curDate.AddHours( 1 ).ToString("HH");
}

これは、テキスト ボックスが入力されていることを前提としています。または、最初にこれを割り当てる必要があります。

テキスト ボックスに値がない場合は、 の結果を取得しTryParse、値を現在の日付に設定できます。

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    DateTime curDate;
    bool isParsed = DateTime.TryParse(txtHH.Text, out curDate);
    if (!isParsed)
      curDate = DateTime.Now;
    txtHH.Text =curDate.AddHours( 1 ).ToString("HH");
}
于 2013-08-21T08:16:42.957 に答える
1

DateTime.AddHours() と DateTime.AddMinutes() はどちらも、呼び出されると DateTime の新しいインスタンスを返します。返されたインスタンスを記録しておき、次に [Hour] ボタンまたは [Minute] ボタンをクリックしたときに呼び出す必要があります。コードは次のようになります。

private DateTime m_LastDateTime;

private void Cld_SelectedDateChanged(object sender, EventArgs e)
{
    m_LastDateTime = e.Start;
    textBox1.Text = m_LastDateTime.ToString();
    txtHH.Text =m_LastDateTime.Hour.ToString();
    txtMM.Text =m_LastDateTime.Minute.ToString();
}

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    m_LastDateTime = m_LastDateTime.AddHours(1);
    txtHH.Text = m_LastDateTime.ToString("HH");
}

private void btnAddMinute_Click( object sender, RoutedEventArgs e )
{
    m_LastDateTime = m_LastDateTime.AddMinutes(1);
    txtMM.Text = m_LastDateTime.ToString( "mm" );
}
于 2013-08-21T08:25:59.623 に答える