每次加载表单时都会禁用一个按钮

时间:2016-09-05 15:13:56

标签: c#

我有两种形式(Form1Form2)。

Form1有一些其他控件,在填写完所有字段后保存到数据库中。它还有一个DELETE按钮,您可以从数据库中删除搜索到的信息,并且它具有"可用房间"按钮,单击该按钮将加载Form2

Form2有许多按钮(未占用的房间),我可以从中选择。现在,我的问题是当我点击"可用房间"时,如何在Form2上禁用所选按钮(例如:101)。第二次或任何其他日子,并且在Form2下次加载等时禁用任何其他所选按钮(例如:102)。

为了清楚说明,我唯一希望Form2上的禁用按钮处于活动状态,就是当我单击Form1上的DELETE按钮时。但是,这个我做了。

3 个答案:

答案 0 :(得分:1)

当您启动新的Form2时,保存表单变量并使用它来访问其值。您应该能够访问Form2上按钮的button.Enabled属性。

这是您在Form1上的代码

Form2 secondForm;

private void button_Clicked (object sender, EventArgs e)
{
    if (secondForm != null)
    {
        secondForm.yourButton.Enabled = true;
    }
    // Any other code you want to handle
}
private void Form2_Closing (object sender, EventArgs e)
{
    secondForm = null;
}

这就是每次打开/显示Form2时应该做的事情:

secondForm = new Form2();
secondForm.Show();
secondForm.Closing += new System.EventHandler(Form2_Closing);

编辑:谢谢Hans Passant!忘了。如果表单已关闭,您还应将secondForm的值设置为null。编辑了上面的代码。

答案 1 :(得分:0)

使用表单加载事件 - https://msdn.microsoft.com/en-us/library/system.windows.forms.form.load(v=vs.110).aspx

加载表单2时,请阅读数据库。您已经知道需要禁用房间按钮的情况。例如,为简单起见,我们假设您可以将数据库的列读入c#boolean(例如unAvailable),并根据该值确定房间是否可用。所以在你的表单2加载(处理表单加载事件)时,需要有一个像 -

这样的条件
Form_Load(System.Object sender, 
System.EventArgs e)
{
    roomButton.Enabled = unAvailable;
}

因此,根据字段unAvailabled的值,启用或禁用roomButton。

答案 2 :(得分:0)

我必须说谢谢你上面的所有评论和答案。通过它们,我开始思考,特别是使用Form2上的Form_Load事件进行思考,当它发生时,它就像一个魅力!!!!。

我在Form2_Load事件中所做的就是读取数据库中的Apartment_No列(根据建议的一个贡献者),并使用每个值来使用switch ... case来禁用相应的按钮。

以下是代码:

     private void Form2_Load(object sender, EventArgs e)
    {
        string constr = @"Data Source=DESKTOP-J6KRI77\SQLEXPRESS; Initial Catalog = SELLnBUY; Integrated Security = true";
        string cmdstr = "SELECT Apartment_No FROM Apartment";
        SqlConnection con = new SqlConnection(constr);
        SqlCommand com = new SqlCommand(cmdstr, con);

        con.Open();
        SqlDataReader r = com.ExecuteReader();


        while (r.Read())
        {
          int room = int.Parse(r["Apartment_No"].ToString());

            switch(room)
            {
                case 101:               
                        button1.Enabled = false;
                        break;                       
                case 102:                       
                        button2.Enabled = false;
                        break;
                    case 103:
                        button3.Enabled = false;
                        break;
                case 104:
                        button4.Enabled = false;
                        break;

            }
        }
        con.Close();