繁体   English   中英

c#Groupbox属性更改

[英]c# Groupbox Property Change

我在Windows窗体上有一个Groupbox,其enabled属性设置为false。 我想在验证用户名和密码后在代码中启用Groupbox。 当我调用Groupbox.Enabled = true方法时,Groupbox的状态不会更改。 我正在从另一个Windows窗体进行调用,并且在进行调用以启用Groupbox之前已经实例化了该窗体。 我想念什么吗?

namespace ShadowKey
{
    public partial class SetKey : Form
    {
        ConfigOptions cOptions = new ConfigOptions();

        public SetKey()
        {
            InitializeComponent();
        }

        private bool CompareStrings(string string1, string string2)
        {
            return string.Compare(string1, string2, true,     System.Globalization.CultureInfo.InvariantCulture) == 0 ? true : false;
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        try
        {
            Thread.Sleep(2000);
            string connection = @"Data Source=|DataDirectory|\EncrypterDB.sdf";
            SqlCeConnection dataCon = new SqlCeConnection(connection);
            dataCon.Open();
            string userText = tbUser.Text;
            string pwrdText = tbPwrd.Text;
            SqlCeCommand cmd = new SqlCeCommand("Select usr_name, usr_password FROM user_accounts WHERE usr_name='" + tbUser.Text + "' and usr_password='" + tbPwrd.Text + "'", dataCon);
            cmd.Parameters.Add(new SqlCeParameter("username", userText));
            cmd.Parameters.Add(new SqlCeParameter("password", pwrdText));

            SqlCeDataReader rdr = cmd.ExecuteReader();

            try
            {
                rdr.Read();
                if (rdr["usr_name"].ToString().Trim() == userText && rdr["usr_password"].ToString().Trim() == pwrdText)
                {
                    cOptions.gbEncryptionKey.Enabled = true;
                }
            }
            catch
            {
                MessageBox.Show("Invalid Username or Password!", "Login Error!");
            }
            rdr.Close();
            dataCon.Close();
        }

        catch
        {
            MessageBox.Show("You've thrown an exception!", "Error!");
        }

    }
}

}

没有太多代码需要经过,但是我敢猜测。 我怀疑您的LinkLabel正在创建ConfigOptions的新实例。 然后,当Enabled属性设置为true时,将在实例化SetKey时创建的实例上对其进行设置。 这意味着您不是在更新所显示的内容,而是在更新隐藏的内容。 将断点放在ConfigOptions构造函数中,查看是否多次调用该断点。

我看不到何时显示ConfigOptions,但是可以说它显示为要打开的第一个窗体,现在您正在查看第二个窗体。 访问ConfigOptions上的属性的方法是:

(Application.OpenForms[0] as ConfigOptions).ThePropertyToSet = PropertyValueHere;

基本上,您想基于打开窗体的索引(顺序)通过Application.OpenForms访问窗体。 执行以下操作无济于事,因为您实际上并未在打开的ConfigOption窗体上设置属性。

ConfigOptions cOptions = new ConfigOptions();
cOptions.gbEncryptionKey.Enabled = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM