【问题标题】:I can't start method when using DateTime使用 DateTime 时我无法启动方法
【发布时间】:2013-04-14 00:45:43
【问题描述】:

我的代码有问题... 初始化日期时间时,我看不到消息框。 代码有什么问题?我根本找不到任何错误。 我正在使用支持 DateTimePicker 的 WPF 修改应用程序。 它看起来像这样:

    private void Start_Click(object sender, RoutedEventArgs e)
    {
        startjob();
    }
    private void startjob()
    {
        DateTime start = (DateTime)DateTimePicker1.Value;
        DateTime end = (DateTime)DateTimePicker2.Value;
        DateTime now = DateTime.Now;
        if ((now > start) && (now < end))
        {
            System.Windows.MessageBox.Show("It works");
        }

XAML:
<wpfTool:DateTimePicker x:Name="DateTimePicker1" Margin="506,189,192,1137" Width="227" TimeFormat="LongTime">
                </wpfTool:DateTimePicker>
                <wpfTool:DateTimePicker x:Name="DateTimePicker2" Margin="506,238,192,1088" Width="227" Height="25">
                    </wpfTool:DateTimePicker>

【问题讨论】:

  • 你确定start &lt; now &lt; end
  • 没有看到你设置的 DateTimePicker1 和 DateTimePicker2 值,很难看出真正的问题......
  • 旁注,你为什么要明确地投射DateTimeDateTimePicker1.Value 已经返回了一个 DateTime 对象。
  • @keyboardP 因为如果我不使用 (DateTime) 我会收到此错误:无法隐式转换类型“System.DateTime?”到“系统。日期时间”。存在显式转换(您是否缺少演员表?)
  • @NDJ 我把 DateTimePicker 从 2013-04-14-02-55-00 放到 2013-04-14-02-56-00

标签: c# function datetime methods datetimepicker


【解决方案1】:
DateTime? start = DateTimePicker1.Value;
DateTime? end = DateTimePicker2.Value;
DateTime now = DateTime.Now;

if (start == null || end == null)
{
    // one of the pickers is empty
}
else if (now >= start.Value && now <= end.Value)
{
    // you selected values in range of "now"
}

【讨论】:

  • 谢谢,不过效果很好。如果我在 DateTimePicker1 已经启动时不按开始按钮,则不会显示消息框。很奇怪.. Timer 是最好的解决方案吗?
  • 对不起,我没有关注你。当然,如果你不按下按钮,什么都不会发生。您的代码在开始按钮的 Click 事件中。
  • 哦忘了。当我点击开始按钮时,开始按钮等待 Startjob 开始,然后结束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
相关资源
最近更新 更多