簡體   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