0

每次我单击小时按钮或分钟按钮时,它应该填充一个文本框,并在 24 小时格式内每次单击按钮将小时增加 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 添加到文本框的当前日期值,但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.Today返回类似于21/08/2013 00:00:00. DateTime每次调用它时都会返回相同的值。

您将需要添加点击计数器并添加计数器,或者存储初始结果DateTime.Today并不断增加它。

请注意,如果在应用程序执行过程中更改日期,则第二个解决方案是您需要使用的解决方案,因为在第一个解决方案中,日期会在您不希望的情况下增加。

于 2013-08-21T08:20:39.440 回答
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 回答