从表格2,C#在形式1控制计时器(Control timer in form 1 from form

2019-10-16 23:03发布

在形成标签正在显示计时器的计数。 现在我想停下来,开始和使用形式2.我该怎么办this.plz帮助重置

Answer 1:

形式只是类,并在表格2的计时器是类中的一个对象。

您可以更改Modifiers的计时器的财产公开,然后实例里面形式1 Form 2,调用Show()表2的方法,然后访问您的Timer对象现在是公开的。

所以,你有2种形式,像这样的一个项目:

在表1中创建一个按钮,如下所示:

放置在表2中的计时器对象并更改访问修饰符,如下所示:

然后把下面的代码你的按钮下的形式之一:

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

现在,你可以启动表格2和表格1访问所有属性的计时器上的表格2。

这是否帮助?



Answer 2:

如果计时器对象驻留在Form1上,然后为它创建一个公共属性:

public Timer Form1Timer { get { return timer1; } }

然后你就可以通过具有参考表格2,配成1你可以通过它来构造,或者具有Form 2上的一组属性做这个访问此计时器。 一旦你到Form1的参考,你可以简单地调用计时器方法:

Form1.Form1Timer.Start();

你总是可以创建一个单独出Form1的,如果你不能通过它来Form2的一个参考。

声明你的单身:

private static Form1 _singleton

初始化你单身,如果它不是已经,并将其返回:

 public static Form1 Singleton
 { 
    get { _singleton ?? (_singleton = new Form1()); } 
 }

为了获得最佳的做法,让你的Form1构造私有的。 如果Form1中没有默认构造函数(无参数)这当然是行不通的。

然后,在窗体2:

Form1.Singleton.Form1Timer.Start();


Answer 3:

做这个

static Form1 _frmObj;
public static Form1 frmObj
{
     get { return _frmObj; }
     set { _frmObj = value; }
}

在窗体加载

private void Form1_Load(object sender, EventArgs e)
{
      frmObj= this;
}

访问形式,它是从另一个窗体控件

Form1.frmObj.timer1.Stop();


文章来源: Control timer in form 1 from form 2, C#