因此,我使用此代碼的總體目標是從不同線程(以安全方式)設置標籤的文本屬性。代表和設置標籤
namespace csDinger3
{
public delegate void setlblStarted_txt(string text);
public partial class ClientUI : Form
{
public void setlblStarted_txt(string text)
{
var setlblStarted a = new setlblStarted(setlblStarted_txt);
if (this.lblStarted.InvokeRequired)
{
this.Invoke(a, new object[] { text });
}
else
{
this.lblStarted.Text = text;
}
}
}
}
調用代碼:
namespace csDinger3
{
public class Program
{
// Some code that's not relevant
public static void updateText(Int32 number)
{
setlblStarted x = new setlblStarted(ClientUI.setlblStarted_txt);
x(number.ToString());
}
}
}
從我能理解(並請糾正我,如果我錯了),我需要創建的setlblStarted_txt
一個新實例,點,在法新實例setlblStarted_txt
,但問題是目前ClientUI.setlblStarted_txt
不是靜態的,而是想要一個對象引用。
我使用ClientUI c = new ClientUI();
嘗試過,但不工作(因爲它創建窗體的新實例?)
我在做什麼錯了,如果可能的話,你能告訴我爲什麼?
你到底想達到什麼目的?在.NET 4.0中,大部分時間你都不需要聲明委託。 – abatishchev
你爲什麼要把這段代碼放到'Program'類中?這是啓動應用程序的人。你應該把它放在WinForms類的代碼後面。 – Cameron
@Cameron我用這個作爲中心類,但我想我可以改變它很容易 –