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

C# WinForm 複製事件代碼無效:未註冊事件處理器的經典坑

     編輯:程式設計疑難解答

問題現象

從其他項目複製 CheckedChanged 事件代碼,新項目中控件同名,但運行時事件不觸發。

根本原因

**事件處理器未註冊**。代碼僅定義了方法,但沒有將方法與控件的 CheckedChanged 事件關聯起來。

解決方法(兩種方式)

方式一:設計器可視化註冊(推薦新手)

  1. 在設計器中選中目標控件(如 rdbRS232)。
  2. 屬性面板點擊 閃電圖標 (事件)。
  3. 找到 CheckedChanged,下拉選擇現有方法 rdbRS232_CheckedChanged 或雙擊自動生成。

方式二:代碼中手動註冊

public Form1() {
    InitializeComponent();
    // 在 InitializeComponent 之後註冊
    this.rdbRS232.CheckedChanged += rdbRS232_CheckedChanged;
}

驗證技巧

  • 註冊後,設計器事件欄會顯示方法名,不再為空。
  • 運行程序,勾選控件,斷點命中即成功。

避坑指南

  • 複製代碼時,務必同步複製 InitializeComponent 中的事件綁定語句(通常在 *.Designer.cs)。
  • 使用 ReSharper / Rider 等工具可自動提示未訂閱事件。
  • 養成「先拖控件、再雙擊生成事件、再寫邏輯」的習慣,避免手動綁定出錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved