c# – 可以重载表单的ShowDialog方法并返回不同的结果吗?
发布时间:2020-12-15 06:20:38 所属栏目:百科 来源:网络整理
导读:编辑:这个方法实际上很好,我问过,然后找到解决方案.我在重载的ShowDialog()方法中添加了正确的调用(它不是一个重载,甚至是一个重写,但它的工作原理是一样的,我的新问题是底部的. 我有一个表单,您可以单击三个按钮之一.我已经为返回的结果定义了一个枚举.我
编辑:这个方法实际上很好,我问过,然后找到解决方案.我在重载的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()’,它的工作.这是我的新问题: 此外,这是做这些的最好办法吗?为什么? 谢谢. 解决方法
编辑:改变ShowDialog()的功能是个好主意,人们期望它返回一个DialogResult并显示表单,我建议像下面的建议.因此,仍然允许以正常的方式使用ShowDialog().
您可以在MyForm上创建一个静态方法,像DoShowGetResult() 这看起来像这样 public static MyResultsForm DoShowGetResult() { var f = new MyForm(); if(f.ShowDialog() == DialogResult.OK) { return f.Result; // public property on your form of the result selected } return null; } 那么你可以使用这个 MyFormsResult result = MyForm.DoShowGetResult(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |