【发布时间】:2016-09-16 21:59:18
【问题描述】:
我正在尝试学习 C# 和一般编程,但遇到了问题。我已经尝试搜索答案但失败了,所以如果我复制另一个主题,我很抱歉。
我有 1 个窗体 (Form1)、外部类 (Class1)、窗体上的按钮和标签。 这个类是一个简单的文件粉碎机,从按钮点击开始。 Label1.text 应该从外部类更新,显示现在正在粉碎的文件。
我发现,我需要使用委托和事件才能正确实现,但我不知道如何正确使用它们。 代码在这里:
//Form1
private async void button2_Click(object sender, EventArgs e)
{
var task = new Task(() =>
{
check = true;
bool success = FileUtilities.Shred(textBox1.Text);
});
task.Start();
public void ChangeName(string text)
{
label3.Text = text;
}
//Class1
public static bool ShredFile(string filePath, bool shouldDelete = true)
{
bool success = true;
try
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Write);
//Label1.text = filePath; - should be like that.
我尝试使用public void ChangeName 访问该属性,但没有成功。我不明白我应该在哪里创建一个委托、一个事件以及在哪里订阅这个事件。
更新:我发现了问题所在。我的程序中有几个线程,我无法通过我的班级访问表单上的标签。我不得不使用回调,然后订阅和事件完美运行。感谢您,Thorsten Dittmar,展示了正确的方式。
【问题讨论】: