1

表单中的标签显示计时器的计数。现在我想使用表格 2 停止、启动和重置它。我该怎么做。请帮忙

4

3 回答 3

3

表单只是类,Form 2 上的计时器是该类中的一个对象。

您可以将Modifiers计时器的属性更改为public,然后在Form 1中实例化Form 2,调用Show()Form 2的方法,然后访问您现在公开的计时器对象。

所以你有一个有 2 种形式的项目,如下所示:

解决方案资源管理器

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

形式一

在 Form 2 上放置一个计时器对象并更改访问修饰符,如下所示:

特性

然后将以下代码放在表单一中的按钮下:

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

现在您可以启动表单 2 并从表单 1 访问表单 2 上计时器的所有属性。

这有帮助吗?

于 2012-07-06T14:26:22.843 回答
2

如果计时器对象位于 Form1 中,则为其创建一个公共属性:

public Timer Form1Timer { get { return timer1; } }

然后,您可以通过在 Form 2 中引用 Form 1 来访问此计时器。您可以通过将其传递给构造函数或在 Form2 上设置属性来执行此操作。引用 Form1 后,您可以简单地调用计时器上的方法:

Form1.Form1Timer.Start();

如果您不能将它的引用传递给 Form2,则始终可以从 Form1 中创建一个单例。

声明你的单例:

private static Form1 _singleton

如果还没有初始化你的单例,并返回它:

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

为获得最佳实践,请将您的 Form1 构造函数设为私有。如果 Form1 没有默认构造函数(无参数),这当然不起作用。

然后在 Form2 中:

Form1.Singleton.Form1Timer.Start();
于 2012-07-06T14:36:42.773 回答
0

做这个

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();
于 2013-06-14T07:09:20.727 回答