.net 在Windows窗体中是否有从自定义对话框返回值的标准方法?
所以现在我的项目有一些自定义对话框,可以提示用户生日,或者其他什么。现在他们只是在得到答案后设置.net 在Windows窗体中是否有从自定义对话框返回值的标准方法?,.net,winforms,user-interface,.net,Winforms,User Interface,所以现在我的项目有一些自定义对话框,可以提示用户生日,或者其他什么。现在他们只是在得到答案后设置this.birth属性(类型为DateTime?,null表示“取消”)。然后,调用者检查它创建的对话框的生日属性,以了解用户回答了什么 我的问题是,有没有更标准的模式来做这样的事情?我知道我们可以为基本的OK/Cancel设置这个。DialogResult,但是在Windows窗体中是否有一种更通用的方式来表示“这是我收集的数据”我总是按照您描述的方式来做。我很想知道是否有一种更被接受的方法 这样
this.birth
属性(类型为DateTime?
,null表示“取消”)。然后,调用者检查它创建的对话框的生日
属性,以了解用户回答了什么
我的问题是,有没有更标准的模式来做这样的事情?我知道我们可以为基本的OK/Cancel设置
这个。DialogResult
,但是在Windows窗体中是否有一种更通用的方式来表示“这是我收集的数据”我总是按照您描述的方式来做。我很想知道是否有一种更被接受的方法
这样做有没有更标准的模式
不,听起来你用的方法是对的
如果对话框返回DialogResult.OK,则假设对话框中所有必要的属性都有效。我认为在自定义对话框中公开属性是惯用的方法,因为标准对话框(如Select/OpenFileDialog)就是这样做的。有人可能会说,使用ShowBirthdayDialog()方法返回您要查找的结果更显式,也更能揭示您的意图,但是遵循框架的模式可能是明智的做法。对于我来说,坚持对话框返回标准对话框响应,然后通过属性访问结果是明智的做法 我坐在这里有两个很好的理由:
if (Dialog == Ok)
{
// Do Stuff with the entered values
}
else
{
// Respond appropriately to the user cancelling the dialog
}
这是一个很好的问题——我们应该问这样的问题——但对我来说,目前的模式是一个不错的模式
Murph对于模式输入对话框,我通常会重载ShowDialog并为所需的数据传递参数
DialogResult ShowDialog(out datetime birthday)
我通常发现,与将我的属性与Form类公开的100+混合相比,更容易发现和理解
对于表单,我通常有一个控制器和一个IView接口,该接口使用只读属性传递数据。如果让ShowBirthdayDialog()方法返回是否返回了Cancel或OK,则更为实用。根据框架的模式使用属性肯定更好。回答得好。