简体   繁体   中英

C# How to access Form1 controls from Form2 and get not affected when minimized

Good day.

What I need to achieve:
Still access Form1 controls (more on performclick buttons) & when I minimize the Form1 , the Form2 is not get affected.

Want to copy >> Jitbit Macro Recorder Toolbar when recording or playing.

What i got:

Form1:

Form2 form2= new Form2();

private void Form1_Load(object sender, EventArgs e)
{
     form2.Show();
}

Form2:

Form1 form1;

private void Form2_Load(object sender, EventArgs e)
{
     form1 = (Form1)this.Owner;
}

private void Button1_Click(object sender, EventArgs e)
{
     form1.buttonRecord.PerformClick();
     form1.WindowState = FormWindowState.Minimized;
}

If you really want to go down that road you could make your click handler public and call it.

Form1:

Form2 form2= new Form2();

private void Form1_Load(object sender, EventArgs e)
{
     form2.Owner = this;
     form2.Show();
}

public void ButtonRecord_Click(object sender, EventArgs e)
{
}

Form2:

Form1 form1;

private void Form2_Load(object sender, EventArgs e)
{
     form1 = (Form1)this.Owner;
}

private void Button1_Click(object sender, EventArgs e)
{
     form1.ButtonRecord_Click(sender, e);
     form1.WindowState = FormWindowState.Minimized;
}

What you are basically doing is a cirlucar reference between the two forms, which is not ideal. You could consider using events like this:

Form1:

Form2 form2= new Form2();

private void Form1_Load(object sender, EventArgs e)
{
     form2.Show();
     form2.Test += (s, ee) => MessageBox.Show("test event");
}

Form2:

public event EventHandler Test;

private void Button1_Click(object sender, EventArgs e)
{
     Test?.Invoke(this, EventArgs.Empty);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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