首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# TextBox 按下 Enter 鍵觸發事件並操作外部參數

     編輯:程式設計綜合問答

問題情境

在 KeyDown 事件中需判斷 Enter 鍵並操作傳入的參數 short i,但事件簽名無法直接加入額外參數。

解決方案:利用控件的 Tag 屬性攜帶資料

// 綁定事件時將參數存入 Tag
textBox1.Tag = (short)5; // 假設 i = 5
textBox1.KeyDown += Mission_KeyDown;

// 事件處理
private void Mission_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        TextBox tb = sender as TextBox;
        if (tb != null && tb.Tag is short i)
        {
            // 對 i 進行操作
            i += 1;
            tb.Tag = i; // 寫回
            MessageBox.Show("參數已更新:" + i);
        }
    }
}

替代方案

  • 使用 Lambda 表達式 捕獲外部變數(需注意變數生命週期)。
  • 將參數封裝於表單層級欄位或專用 Model 類別中。
  • 若為 WPF,可使用 CommandParameter 傳遞參數。

透過 Tag 屬性是最簡單且符合 WinForms 慣用模式的做法,避免修改事件簽名導致無法綁定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved