C# 用C语言中的日期选择器创建模式窗口#

C# 用C语言中的日期选择器创建模式窗口#,c#,datepicker,C#,Datepicker,我有一个C#应用程序,其中执行一个需要日期的函数。最初的规范说当前日期可以一直使用,但现在我必须允许用户能够根据需要更改日期 问题是,此操作完全在后台执行。只有一个菜单项可供用户单击以启动流程。因此,我想在用户单击菜单项时添加一个模式窗口,询问用户要使用的日期,并返回输入的日期。我一直没能找到一个方法来做到这一点 我是否需要创建一个只有一个项目的表单(日期选择器)并将其设计成一个模式窗口?或者是否有一个现有的模态窗口类可以做到这一点?我认为框架中没有内置模态窗口 您必须创建一个新的windows

我有一个C#应用程序,其中执行一个需要日期的函数。最初的规范说当前日期可以一直使用,但现在我必须允许用户能够根据需要更改日期

问题是,此操作完全在后台执行。只有一个菜单项可供用户单击以启动流程。因此,我想在用户单击菜单项时添加一个模式窗口,询问用户要使用的日期,并返回输入的日期。我一直没能找到一个方法来做到这一点


我是否需要创建一个只有一个项目的表单(日期选择器)并将其设计成一个模式窗口?或者是否有一个现有的模态窗口类可以做到这一点?

我认为框架中没有内置模态窗口

您必须创建一个新的windows窗体。在上面放一个日期选择器。将其修改器公开,并执行以下操作:

private void MenuItemClick(objec sender, EventArgs e)
{
   var userEnteredDate = DateTime.MinValue;
   FormWithDate fmNewFormWithDateOnIt = new FormWithDate();
   fmNewFormWithDateOnIt.ShowDialog();
   userEnteredDate = fmNewFormWithDateOnIt.dtTimePickerOnForm.Value;
   fmNewFormWithDateOnIt.Dispose()

   //Do your thing
}
更新:您可以在表单上放置一个按钮,设置其对话框result=OK,然后执行以下操作:

if (fmNewFormWithDateOnIt.ShowDialog() == DialogResult.OK) //Not clicked the red close button on the form
{
       userEnteredDate = fmNewFormWithDateOnIt.dtTimePickerOnForm.Value;
}

但是,我如何知道用户是否更改了日期?这似乎只是在加载表单时从表单中获取值,而不是等待用户单击“确定”…这应该可以正常工作,这是我所做的,并且我对该方法没有任何问题。除了你的可能更好,因为我总是调用Close()而不是Dispose()。哎呀@Elie有
Show()
ShowDialog()
<代码>显示对话框()以模式显示窗口。