如何解雇事件,以便我的其他形式对此作出反应?

时间:2010-07-15 17:54:34

标签: c# .net winforms

我有一个名为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"))
            {

            }
        }

3 个答案:

答案 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,它可以工作 - 但在这个用例中可能会被滥用。其目的是让父表单知道用户在子表单上执行的操作 - 他们是否点击了OKCancel?他们点击了Retry还是Abort了?它应该用于身份验证目的并不直观。

那么 - 什么更好?可能是一个组合...

您的LoginBox 是一个对话框,因此应该预期返回DialogResult - 但也应仅用于指示用户在{{}上执行的操作1}},而不是身份验证的结果。

我建议调查一些其他对话框的用法,例如Form。它返回OpenFileDialog 以指定是否继续文件打开,但在明确告知之前它实际上不会打开文件。这意味着消费代码必须检查结果并指示对话框执行它的功能,所以它并不是非常简单 - 但它相当传统。

以下是我建议您使用DialogResult

的示例
LoginBox

答案 2 :(得分:0)

向LoginBox添加事件。然后让MainForm处理该事件。在事件处理程序中继续执行您要执行的其他逻辑。