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

C# WinForms:工具欄按鈕代碼遷移到普通 Button 的正確姿勢

     編輯:程式設計綜合問答

將 ToolStripButton 的點擊邏輯復用到普通 Button 上,核心原則是提取業務邏輯為獨立方法,而非直接複製事件處理器签名。

錯誤示範

// 直接複製 ToolStripButton 事件簽名 → 錯誤
private void toolStripButton6_Click(object sender, EventArgs e) { ... }
private void button1_Click(object sender, EventArgs e) { toolStripButton6_Click(sender, e); } // 不推薦

正確做法:抽離業務方法

// 1. 核心邏輯獨立
private void QueryStudentGrades(string studentName) {
    using (var conn = new SqlConnection(connStr))
    using (var da = new SqlDataAdapter(
        "SELECT * FROM 學生成績表 WHERE 姓名=@name", conn)) {
        da.SelectCommand.Parameters.AddWithValue("@name", studentName);
        var dt = new DataTable();
        da.Fill(dt);
        // 處理 dt...
    }
}

// 2. 兩個按鈕分別調用
private void toolStripButton6_Click(object sender, EventArgs e) {
    QueryStudentGrades(Login.sn.Trim());
}
private void btnQuery_Click(object sender, EventArgs e) {
    QueryStudentGrades(Login.sn.Trim());
}

關鍵優化點

  • 參數化查詢:防 SQL 注入,替代字符串拼接。
  • using 語句:確保連接/命令/適配器及時釋放。
  • 單一職責:UI 事件只負責收集參數、調用業務、更新界面。

同理適用於 MenuItem、ContextMenuStrip 等所有觸發同一業務的入口。

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