我試圖學習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,以顯示正確的方式。
看一看委託文件。 http://stackoverflow.com/documentation/c%23/1194/delegates#t=201609141320451060485 – Jacobr365