如何选择当前日期



我有一个dateTimePicker。默认情况下,它显示当前日期。为了通过日历选择日期,我必须单击一个日期,然后将dateTimePicker.value分配给dateTimePicker_valuechanged事件处理程序中的变量。当我选择当前一天时,不会发生DateTimePicker_valuechanged事件。如何使用日历选择当前日期?请帮忙。预先感谢您。

考虑以下事实:

  • 当您在表单上删除DateTimePicker时,将没有为控件设置Value,并且该控件默认情况下仅显示DateTime.Now,而不会升高ValueChanged

  • ValueChanged事件将在DateTimePicker Control设置不同的Value时提高事件。

so:

  1. 如果您没有在构造函数中设置Value

    • 当表格加载时,ValueChanged不会提出。
    • 用户今天第一次选择,ValueChanged将升高。
  2. 如果在构造函数中设置了Value

    • 当表格加载时,ValueChanged将升高。
    • 用户今天第一次选择,ValueChanged不会提出,因为Value
    • 没有变化

示例

假设您有这样的代码:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    MessageBox.Show(date.ToString());
}

您在DateTimePickerValueChanged事件中具有一些逻辑,该逻辑依赖于DateTimePickerValue,并且在用户选择日期(包括今天)时,您希望该逻辑运行。但是您的观察是,表格首次打开,ValueChanged不会提出。

原因是您在表单上删除DateTimePicker,没有为控件设置Value,并且该控件默认情况下仅显示DateTime.Now,而不会提高ValueChanged

选项1-在构造函数或LOAD中明确设置DateTimePicker.Value

public Form1()
{
    InitializeComponent();
    dateTimePicker1.Value = DateTime.Now;
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    MessageBox.Show(date.ToString());
}

选项2-将逻辑封装在方法中,并将其称为构造函数或load

您可以将逻辑封装在方法中,并通过传递DateTime.Now

来调用构造函数或加载的方法。
public Form1()
{
    InitializeComponent();
    DoSomething(DateTime.Now);
}
void DoSomething(DateTime date)
{
    MessageBox.Show(date.ToString());
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    DoSomething(dateTimePicker1.Value);
}

相关内容

最新更新