2013-08-21 56 views
0

每次点击小时按钮或分钟按钮时,它应该填充一个文本框,并在24小时格式内每按一次按钮增加小时。分钟按钮也是如此。目前它不是迭代的,仅仅只增加一次。按小时增加日期

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"); 
} 

回答

1

DateTime.AddHours()和DateTime.AddMinutes()都会在调用DateTime时返回一个新的DateTime实例。您应该记录返回的实例,并在下次单击“小时”按钮或“分钟”按钮时调用它。这就是你的代码的样子:

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"); 
} 
3

你加入一个以每次点击,如果你看一下代码,你需要增加1到文本框的当前日期值current date,但你过来加入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"); 
} 
1

DateTime.Today回报是一样的东西21/08/2013 00:00:00。 每当您打电话时,这将返回相同的DateTime

您需要添加一个点击计数器并添加计数器或存储来自DateTime.Today的初始结果并继续增加。

请注意,如果日期在应用程序执行过程中发生变化,那么第二种解决方案就是您需要使用的解决方案,因为在第一种解决方案中,日期将会增加,而不需要它。