首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 委派應用:表單按鈕綁定多種輸出行為

     編輯:關於C語言

表單欄位與初始化


private readonly ProcessNumber _pn = new ProcessNumber(100);
private ShowNumberDel _del;

private void Form1_Load(object sender, EventArgs e)
{
    // _pn 已在欄位初始化器建立
}

三種輸出實作方法


// 1. Console
private void ShowInConsole(object[] items)
{
    foreach (var item in items) Console.WriteLine(item);
}

// 2. ListBox
private void ShowInListBox(object[] items)
{
    listBox1.Items.Clear();
    foreach (var item in items) listBox1.Items.Add(item);
}

// 3. Text File
private void ShowInFile(object[] items)
{
    using var sw = new StreamWriter("Test.txt", true);
    foreach (var item in items) sw.WriteLine(item);
}

按鈕事件綁定


// 單一策略
private void button1_Click(object sender, EventArgs e) =>
    _pn.ProcessItems(new ShowNumberDel(ShowInConsole));

private void button2_Click(object sender, EventArgs e) =>
    _pn.ProcessItems(new ShowNumberDel(ShowInListBox));

private void button3_Click(object sender, EventArgs e) =>
    _pn.ProcessItems(new ShowNumberDel(ShowInFile));

// 組合策略:多播委派
private void button4_Click(object sender, EventArgs e)
{
    _del = null; // 重置
    _del += new ShowNumberDel(ShowInListBox);
    _del += new ShowNumberDel(ShowInFile);
    _pn.ProcessItems(_del);
}

設計重點

  • 關注點分離:處理邏輯 (`ProcessNumber`) 不知輸出細節
  • 執行時期組合:按鈕決定輸出組合,無需修改處理類別
  • 開放封閉:新增輸出目標(如 Database、Network)只需新增方法並綁定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved