[英]How to access a timer from another class in C#
另请参见: 如何从其他线程/类启用计时器
计时器已分配给表单,我想在其他位置的特定位置启用它。 我不想公开
这是我用来访问备忘录的代码
public string TextValue
{
set
{
if (this.Memo.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate
{
this.Memo.Text += value + "\n";
});
}
else
{
this.Memo.Text += value + "\n";
}
}
}
public static void addtxt(string txt)
{
var form = Form.ActiveForm as Form1;
if(form != null)
form.TextValue = txt;
}
如果您不想公开计时器本身,请公开可调用以启用计时器的public
方法或属性。 显然,启用计时器的Form
将需要引用拥有Timer
的Form
。
您想如何启用计时器? 为了实现它采取了什么行动?
是否可以在要启用计时器的类中添加事件,并在包含计时器的表单上订阅该事件? 然后,在该事件的事件处理程序中,可以启用计时器。
当另一个类引发事件时,事件处理程序将启用计时器。
public class SomeOtherClassThatDoesStuff
{
public event EventHandler SomethingHappened;
public void DoStuff()
{
...
if( SomethingHappened != null )
SomethingHappened;
...
}
}
public class Form1
{
private void Button1_Click(object sender, EventArgs e )
{
SomeOtherClassThatDoesStuff o = new SomeOtherClassThatDoesStuff();
o.SomethingHappened += new EventHandler(EnableTimer);
o.DoStuff();
}
private void EnableTimer(object sender, EventArgs e )
{
myTimer.Enabled = true;
}
}
这样的事情。 (我没有测试过,甚至也没有编译它,但是我认为您会发现其中的漂移:))。
将计时器设置为“内部”,则程序集中的其他类均可使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.