我能否在标准消息框中添加自定义控件来读取输入值,例如用于用户名和密码的文本字段,或者我应该创建带有“确定、取消”按钮和文本字段的自定义WinForm?
我能否在标准消息框中添加自定义控件来读取输入值,例如用于用户名和密码的文本字段,或者我应该创建带有“确定、取消”按钮和文本字段的自定义WinForm?
Interaction.InputBox
方法。 Microsoft.VisualBasic.Interaction.InputBox("Enter a Value Here", "Title", "Your Default Text",200,100);
您需要创建一个自定义的WinForm来完成此操作。您可以通过在Show方法中返回DialogResult来使其与MessageBox的工作方式相同。
创建自己的模态框或其他输入对话框并不难,您可以构建所需的可重复使用性。
public class ValueHolder {
public string SomeInput { get; set; }
public DialogResult Result { get; set; }
}
public class GimmeValues : Form {
//... HAS A TEXTBOX and Okay Buttons...
private GimmeValues() {
okButton.DialogResult = DialogResult.OK;
cancelButton.DialogResult = DialogResult.Cancel;
// ... other stuff
}
public static ValueHolder GetInput(IWin32Window owner) {
using (GimmeValues values = new GimmeValues()) {
DialogResult result = values.ShowDialog(owner);
return new ValueHolder {
SomeInput = values.Textbox1.Text,
Result = result
};
}
}
}
好的,我刚刚在这个编辑器中写了所有内容,请原谅任何语法错误。
你可以像上面那样做,但稍微整理一下,添加所需的可扩展性(例如需要显示的按钮和输入等)...然后只需调用GimmeValues.GetInput(this)
,其中this
表示一个IWin32Window
...
value
的结果将是所选的无意义值,您可以执行逻辑操作。
if(value.Result == DialogResult.OK && !string.IsNullOrEmpty(value.SomeInput)){
//TODO: Place logic....
}