jhyap jhyap - 1 month ago 8
C# Question

How to enable button in Form 1 from Form 2 using public get set?

I have two buttons in Form 1, one is "ShowForm2" button and one is "button1" button.

Button 1 is disable by default. And when I click "ShowForm2" button, Form 2 will show.

PrntScn of my form 1

So, what I want is, when I click the "button2" in form 2, it will enable the "button1" in form 1.

enter image description here

So, I try to code like this in my form2 class:

public partial class Form2 : Form
{
bool enable_form1_button1;
public bool Enable_form1_button1
{
get { return this.enable_form1_button1; }
set { this.enable_form1_button1 = value; }
}
public Form2()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
enable_form1_button1 = true;
}
}


Then in my Form1 class, I am expecting to get the "enable_form1_button1 = true" to pass into form 1 and enable my form 1 button1. But how to do this?

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btb_Showfrm2_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
button1.Enabled = frm2.Enable_form1_button1; // I put it here, and it just does not seems right
}
}

Answer

Form1.cs

    public partial class Form1 : Form
    {
    public Form1()
    {
        InitializeComponent();
        button1.Enabled = false;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 oFrm2 = new Form2();
        oFrm2.evtFrm += new ShowFrm(oFrm2_evtFrm);
        oFrm2.Show();
    }

    void oFrm2_evtFrm()
    {
        button1.Enabled = true;
    }
}

Form2.cs

    public delegate void ShowFrm();
    public partial class Form2 : Form
    {
    public event ShowFrm evtFrm;
    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (evtFrm != null)
        {
            evtFrm();
        }
    }
}
Comments