【发布时间】:2016-04-25 21:04:19
【问题描述】:
我想创建一个简单的输入对话框。所以我在我的应用程序中添加了一个 Windows From 并在该窗口中放置了一个标签、一个文本框和一个按钮;现在很容易使用构造函数用预定义的值填充我的控件所需的属性,并用result返回输入的值;
public partial class GeneralInputForm : Form
{
public string result = "";
public GeneralInputForm(string label, string defaultValue = "")
{
InitializeComponent();
label1.Text = label;
textBox1.Text = defaultValue;
}
private void button1_Click(object sender, EventArgs e)
{
result = textBox1.Text;
Close();
}
}
现在创建一个 from 的实例并用所需的值填充参数;
GeneralInputForm formInput = new GeneralInputForm("Please enter your age:");
formInput.ShowDialog();
//formInput.result holds the value
我的问题在这里提出;如果我想检查用户在 GeneralInputForm 本身的文本框中输入的值的有效性(而不是稍后通过检查 result 字段来实例化表单时)怎么办?我的意思是 C# 中是否有这样的功能(可能是委托),以便用户自己可以定义一个方法并将其作为构造函数的参数之一传递,该方法检查 textbox1.text 值以确保例如它是成功可以解析成int or float or string?
我不想在我的构造函数中添加一个名为variableType 的丑陋字符串参数,并要求用户说出他是否需要“int”或“float”或“string”或其他什么,然后我自己通过检查variableType 的值,编写了不同的语句以确保输入的文本可以成功解析为 int 或 float 或 string(这将是一个丑陋且有限的解决方案)
【问题讨论】:
-
既然您已经考虑过委托,那您为什么不最终使用它们?
-
我不明白您是否希望被调用的表单执行任何转换。似乎您不要求此作业由被调用的表单执行,但您想要一个 GenericInputForm 回调以检查输入有效性的委托。我错了吗?
-
您得到了答案,但您没有提供反馈。
-
问题是如果使用委托就是答案,我不知道如何实现它