我有一个名为MainForm.cs的表单。当我单击Enter The Progam按钮时,我使用.ShowDialog()方法显示另一个表单。
在这个名为LoginBox.cs的新表单中,我检查输入的凭据是否有效以及它们是否是我希望我的MainForm.cs与肯定响应(实际软件表单打开)或消极响应消息响应消息框警报他的失败。
这是一个非常简单的用例,但我不知道如何正确有效地解决这个问题。谢谢。
private void button1_Click(object sender, EventArgs e)
{
LoginBox login = new LoginBox();
login.ShowDialog();
}
//And in the LoginBox.cs file:
private void button1_Click(object sender, EventArgs e)
{
if ((txtUser.Text == "admin") && (txtPassword.Text == "123"))
{
}
}
答案 0 :(得分:1)
如果您使用ShowDialog
打开表单,则会返回DialogResult
,您可以在主表单中查看。
LoginBox login = new LoginBox();
DialogResult dialogResult = login.ShowDialog();
if (dialogResult == DialogResult.OK)
{
// etc...
}
您可以在DialogResult
表单中设置LoginBox
的值:
DialogResult = DialogResult.OK;
答案 1 :(得分:1)
其他人已提到使用DialogResult
,它可以工作 - 但在这个用例中可能会被滥用。其目的是让父表单知道用户在子表单上执行的操作 - 他们是否点击了OK
或Cancel
?他们点击了Retry
还是Abort
了?它应该用于身份验证目的并不直观。
那么 - 什么更好?可能是一个组合...
您的LoginBox
类 是一个对话框,因此应该预期返回DialogResult
- 但也应仅用于指示用户在{{}上执行的操作1}},而不是身份验证的结果。
我建议调查一些其他对话框的用法,例如Form
。它返回OpenFileDialog
以指定是否继续文件打开,但在明确告知之前它实际上不会打开文件。这意味着消费代码必须检查结果并指示对话框执行它的功能,所以它并不是非常简单 - 但它相当传统。
以下是我建议您使用DialogResult
:
LoginBox
答案 2 :(得分:0)
向LoginBox添加事件。然后让MainForm处理该事件。在事件处理程序中继续执行您要执行的其他逻辑。