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

C# WinForms 批量檢測 CheckBox 狀態並寫入資料庫的高效寫法

     編輯:程式設計疑難解答

前言

在 WinForms 開發中,常遇到需要一次性檢測大量 CheckBox 控制項是否被勾選,並將勾選項目的資料寫入 SQL 資料庫的需求。若逐個撰寫事件處理或輪詢,程式碼不僅冗長,維護成本也極高。本文示範如何利用 LINQ 簡潔地完成這項任務。

核心程式碼

foreach (CheckBox cb in this.Controls.OfType<CheckBox>().Where(x => x.Checked))
{
    string s = cb.Text; // 取得勾選項目的文字,據此組裝 SQL 參數
    // 執行資料庫插入操作
}

關鍵點解析

  • OfType<CheckBox>():從表單的控制項集合中篩選出所有 CheckBox 型別的控制項。
  • Where(x => x.Checked):進一步過濾,只保留 Checked 屬性為 true 的項目。
  • foreach 迴圈:遍歷符合條件的核取方塊,取得其 Text 或 Tag 等識別資訊,組裝參數化 SQL 執行插入。

進階建議

  1. 若 CheckBox 分佈在不同容器(如 Panel、GroupBox),請改用遞迴或 GetAllControls() 擴充方法取得完整控制項樹。
  2. 資料庫操作務必採用參數化查詢,防止 SQL 注入。
  3. 大量寫入時,考慮使用 SqlBulkCopy 或交易批次提交以提升效能。

總結

透過 LINQ 的鏈式語法,我們僅需幾行程式碼即可優雅地解決「百個 CheckBox 狀態判斷與入庫」的問題,大幅提升可讀性與維護性。

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