[英]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.