关闭后,第二个“密码”表单调用的过程使主表单不显示文本框和按钮可见

时间:2018-07-25 10:08:59

标签: c#

我有一个简单的表单应用程序(主表单称为“ frmStart”)。我为此应用程序创建了“基本模式”和“高级模式”。 面板中只有2个单选按钮,带有普通按钮“基本模式”和“高级模式”的外观,因此您只能选择一个或另一个。 在高级模式下,我只显示了隐藏在基本模式下的几个其他选项(文本框,按钮,可编辑文件)。到目前为止,一切正常。 现在,我想通过只显示一个带有简单文本框和确定按钮以检查密码的新表单来密码保护高级模式选项。

我遇到的问题是,当打开密码表单并输入正确的密码时,我在主表单上运行了相同的代码以取消隐藏文本框,依此类推,但是它们却没有出现! 我可能需要重绘主要表格或其他内容,但我不知道该怎么做。我显然做错了。有人可以帮我吗?

以下是一些代码:

A。这是选中“高级模式”按钮时执行的代码

    private void chk_AdvancedMode_CheckedChanged(object sender, EventArgs e)
    {
        if (chk_AdvancedMode.Checked)
        {
            frmPassword frm_Password = new frmPassword();
            frm_Password.Show();
        }
    }

B。这是检查密码的密码形式的代码,如果正确,则执行过程frm_Start.BasicAdvancedMode(true);

    public void btn_PasswordOK_Click(object sender, EventArgs e)
    {
        frmStart frm_Start = new frmStart();
        String s_pw = "ABC123";
        if (txt_Password.Text == s_pw)
        {
            frm_Start.BasicAdvancedMode(true);
            frm_Start.prop_RunningMode = "Running in Advanced Mode";
           // frm_Start.ChangeChecked_Advanced_Basic_Button(true);
        }
        else
        {
            MessageBox.Show("Wrong password! Try again or use Basic Mode");
          //  frm_Start.ChangeChecked_Advanced_Basic_Button(false);
        }
        this.Close();
       }

C。这是程序BasicAdvancedMode的代码

    public void BasicAdvancedMode(Boolean state)
    {
        chk_SYSENG1.Visible = state;
        chk_SYSENG3.Visible = state;
        chk_EditParameters.Visible = state;
        txt_accgcode.Visible = state;
        txt_grpprfowner.Visible = state;
        txt_inlpgm.Visible = state;
        txt_lmtcpb.Visible = state;
        txt_jobd.Visible = state;
        label12.Visible = state;
        label13.Visible = state;
        label14.Visible = state;
        label15.Visible = state;
        label16.Visible = state;
    }

1 个答案:

答案 0 :(得分:1)

您似乎正在开始使用新表格(我认为)frmStart frm_Start = new frmStart();

您可以这样做,前提是要在ShowModal();中打开密码表单,并在关闭后检查结果。加胡椒粉和盐调味。

给出

public class frmPassword
{
    Public bool IsValidated { get; set;}

    public void btn_PasswordOK_Click(object sender, EventArgs e)
    {

        String s_pw = "ABC123";

        if(txt_Password.Text == s_pw)
        {
           IsValidated = true;
           this.Close();
        }
        else
        {
           MessageBox.Show("Wrong password! Try again or use Basic Mode");
        }

    }
}

主表单

private void chk_AdvancedMode_CheckedChanged(object sender, EventArgs e)
{
    if (chk_AdvancedMode.Checked)
    {
        frmPassword frm_Password = new frmPassword();
        frm_Password.ShowModal();
        if(frm_Password.IsValidated)
        {
            BasicAdvancedMode(true);
            prop_RunningMode = "Running in Advanced Mode";
        }
    }
}