Winforms C#:对多个窗体使用单个父级

时间:2019-03-01 15:07:11

标签: c# multithreading forms winforms parent

我的项目中有两种形式(例如Form1和Form2),并且我只运行一种形式,具体取决于从Program.cs中的.txt文件读取的值。

这两种形式具有相同的控件,我想知道是否可以使用相同 父级定义在workerThread(在Fsm.cs类内部)中调用这些控件两种形式。

例如:控件TextBox1在Form1和Form2中定义,但是我想在workerThread DoWork()中仅调用与正在运行的窗体关联的父控件:

 parent.TextBox1.Visible = true;

父级可以是Form1或Form2。

如何在Fsm.cs中相互使用同一父定义? 我不想为两种形式定义两个不同的线程函数。

这里是代码:

public partial class Form1 : Form
{
    public Form1()
    {
        form2 = new Form2();
        InitializeComponent();
        workerObject = new Fsm(this, form2);
        Thread workerThread = new Thread(workerObject.DoWork);
    }
}

public partial class Form2 : Form
{
    public Form2()
    {
        form1 = new Form1();
        InitializeComponent();
        workerObject = new Fsm(form1, this);
        Thread workerThread = new Thread(workerObject.DoWork);
     }
 }


 public class Fsm 
 {
     public Form1 parent;
     public Form2 parent1;

     public Fsm(Form1 p, Form2 p1)
     {
         parent = p;
         parent1 = p1;
     }

     public void DoWork()
     {
         parent.TextBox1.Visible = true;
     }
 }

谢谢。

0 个答案:

没有答案