编辑:这种方法实际上效果很好,我问了它,然后找到了解决方案。我在重载的 ShowDialog() 方法中添加了正确的调用(它不是完全重载,甚至不是覆盖,但它的工作原理相同。我的新问题是底部的问题。
我有一个表单,您可以在其中单击三个按钮之一。我为返回的结果定义了一个枚举。我想拨打电话:
MyFormResults res = MyForm.ShowDialog();
我可以使用以下代码添加一个新的 ShowDialog 方法:
public new MyFormResults ShowDialog()
{
//Show modal dialog
base.ShowDialog(); //This works and somehow I missed this
return myResult; //Form level variable (read on)
}
单击按钮时,我为结果设置了表单级变量:
MyFormResults myResult;
private void btn1_click(object sender, EventArgs e)
{
myResult = MyFormsResults.Result1;
this.DialogResult = DialogResult.OK; //Do I need this for the original ShowDialog() call?
this.Close(); //Should I close the dialog here or in my new ShowDialog() function?
}
//Same as above for the other results
我唯一缺少的是显示对话框(模式)然后返回我的结果的代码。没有base.ShowDialog()
功能,那我该怎么做呢?
编辑:有一个'base.ShowDialog()'并且它有效。这是我的新问题:
另外,这是做这一切的最好方法吗?为什么?
谢谢。