C# DateTimePicker对话框Result.OK

C# DateTimePicker对话框Result.OK,c#,winforms,dialog,datetimepicker,C#,Winforms,Dialog,Datetimepicker,我现在有以下代码: var picker = new DateTimePicker(); var form = new Form(); form.Controls.Add(picker); var result = form.ShowDialog(); if (result == DialogResult.OK) { //Can´t acces this } if (result == DialogResult.Cancel) { //Do when Form closed }

我现在有以下代码:

var picker = new DateTimePicker();
var form = new Form();
form.Controls.Add(picker);
var result = form.ShowDialog();
if (result == DialogResult.OK)
{
    //Can´t acces this
}
if (result == DialogResult.Cancel)
{
    //Do when Form closed
}

当表单出现时,只有
选择器
,没有按钮。现在我只能访问
result==DialogResult.Cancel
当我关闭表单时。使用
result==DialogResult.OK

访问分支需要做什么?您可以在表单上添加两个按钮
OK
Cancel
,并正确处理
单击事件。关键是您必须使用
DialogResult
属性来关闭表单,而不是使用
close()
方法,如下所示:

//Click event handler for your OK button
private void OK_Click(object sender, EventArgs e){
    DialogResult = DialogResult.OK;
}
//Click event handler for your Cancel button
private void Cancel_Click(object sender, EventArgs e){
    DialogResult = DialogResult.Cancel;
}
或者只需使用
按钮的
对话框结果
属性即可(无需向
单击事件处理程序添加代码):


注意:只有在使用
ShowDialog()
显示表单时,上述所有操作才有效否则,您必须手动关闭表单

您需要一种方式让用户通过接受来关闭表单。使用按钮或其他方式。这取决于你。有没有办法在不为表单创建类的情况下添加按钮并指定它们要做什么(确定/取消)?当然。只需在设计器中创建一个新项目和一个新表单进行测试,做您想做的事情,看看设计器是如何在InitializeComponent()方法中完成的。您可以在实际项目中的匿名表单中执行同样的操作。或者,由于每个表单的右上角都有一个“X”按钮,因此您可以取消
取消
按钮,只需处理
FormClosingEventArgs
事件,在该事件中,您可以评估
FormClosingEventArgs
并收集大量发生的情况。此外,如果需要,您可以
取消
关闭以防止它。@DonBoitnott该代码仅用于演示,我们实际上可以禁用默认的关闭按钮并使用我们自己的关闭按钮
DialogResult=DialogResult.OK
DialogResult=DialogResult.Cancel
也会触发
FormClosing
事件。“DialogResult=DialogResult.OK或DialogResult=DialogResult.Cancel也会触发FormClosing事件。”@DonBoitnott你认为我是winforms中的新手吗???我忘了说应该使用
ShownDialog()
来显示表单,当您执行此任务时
DialogResult=DialogResult.OK
,表单将被关闭,当然
FormClosing
将被触发。
buttonOK.DialogResult = DialogResult.OK;
buttonCancel.DialogResult = DialogResult.Cancel;