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;