在之前关于如何从对话框窗口返回字符串的问题中,yapiskan建议重载子窗体的ShowDialog()方法以包含out参数.
我的问题是这是否是C#中的一个好方法.
这是一些示例代码,基于yapiskan的建议.在子窗体中(在此示例中,它是一个带有文本框的窗体),您只需添加ShowDialog重载并将UI值分配给out参数:
public DialogResult ShowDialog(out string s)
{
DialogResult result = this.ShowDialog();
s = this.textBox1.Text;
return result;
}
Run Code Online (Sandbox Code Playgroud)
要显示表单并检索输入的文本,请执行以下操作:
using (CustomDialog frm = new CustomDialog())
{
string s;
if (frm.ShowDialog(out s) == DialogResult.OK)
{
// do something with s
}
}
Run Code Online (Sandbox Code Playgroud)
我能想到的一个优点是,这种方法迫使CustomDialog表单的用户通过表单的ShowDialog方法获取它所包含的信息(而不是来自知道它的所谓方法,如GetMyData()或其他东西) .
它应该不行,因为.net框架不使用此设计.在OpenFileDialog类的情况下,它有一个无参数的ShowDialog()方法返回一个DialogResult.调用此方法后,用户应使用FileName,FileNames,SafeFileName和SafeFileNames方法获取所选文件.
让我们假设这是以"out参数"的方式实现的.我必须编写这样的代码才能得到SafeFileName:
string dummyFileName;
string[] dummyFileNames;
string safeFileName;
string[] dummySafeFileNames;
myDialog.ShowDialog(out dummyFileName, out dummyFileNames, out safeFileName, out dummySafeFileNames);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9808 次 |
| 最近记录: |