Set control visible from other form

2019-03-02 06:12发布

问题:

I set the button visible property to false of Form2. How I will make the button(Form2) visible when I click a button(a button that also opens Form2) from Form1.

I tried this :

private void button1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    f2.Show();
    f2.button1.Visible = true;
    f2.button1.Location = new Point(200, 200);
}

回答1:

Create a method in Form2

public void setButton1Visible(boolean flag){
      this.button1.Visible = flag;
}

You cannot access the button directly from Form1. (Actually you can,but it is not right way to solve it.

private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.setButton1Visible(true);
    }


回答2:

I think button1 is declared as private. Your code will work if you declare button1 as public.

public System.Windows.Forms.Button button1;


回答3:

Imagine you control is in form 1. Set corresponding control "modifiers = public" from control property window

Form 1

    private void ShowForm2_Click(object sender, EventArgs e)
    {
        Form2 NewForm = new Form2();
        NewForm.Owner = this;
        NewForm.Show();
    }

In Form 2

    private void ChangeProperty_Click(object sender, EventArgs e)
    {
       (this.Owner as Form1).MyButton.Visible = false;
    }

    //while doing this Control In Form1 will be hidden :)