我正在使用c#处理Windows应用程序。
我有一个说X,其中我有一个标签说label1,来自代码类X.cs的这个x是
继承该类说FormManager.cs(自定义方法来控制
上的常用功能)表单加载或表单关闭时的所有表单。我在FormManager.cs上运行一个线程来执行
一些重复的任务,我想从哪里更改label1的标签文本从
这个FormManager.cs类。我怎样才能做到这一点。
答案 0 :(得分:1)
Invoke
以便UI更新将在UI线程中执行。这是一个实现示例: FormManager
表格:
public partial class FormManager : Form
{
public FormManager()
{
InitializeComponent();
}
public Action BackgroundActionCompleted { get; set; }
public void OnBackgroundActionCompleted()
{
if (this.BackgroundActionCompleted != null)
{
// Invoke so the action will be launched on the UI thread
this.Invoke(this.BackgroundActionCompleted);
}
}
}
X
表格:
public partial class X : FormManager
{
public X()
{
InitializeComponent();
}
private void X_Load(object sender, EventArgs e)
{
this.BackgroundActionCompleted = delegate() { this.label2.Text = "New Text"; };
}
}
答案 1 :(得分:0)
基类无法看到子属性 但是你可以在基类上使用
abstract void UpdateLabel();
在您的线程中调用它,然后在派生类中实现此方法,您可以在其中访问Label1对象
请记住,要从其他线程更新UI对象,您可能需要使用Invoke()