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

WinForm ListBox 元件程式設計進階指南(二):項目移動與介面展示

     編輯:關於C語言

前言

承接上篇文章,本文詳細解析 ListBox 項目移動 (向上/向下) 的演算法邏輯,並展示完整執行介面截圖。

項目移動核心演算法

設計思路

  1. 建立暫存 ListItem 保存目前選中項目的 Text 與 Value
  2. 將相鄰項目 (上一個或下一個) 的 Text/Value 複製到目前位置
  3. 將暫存資料寫入相鄰位置
  4. 更新 SelectedIndex 保持選中狀態跟隨移動

完整程式碼實作


// 向上移位與向下移位事件處理
if ((sender == Up && lstItem.SelectedIndex > 0) ||
    (sender == Down && lstItem.SelectedIndex < lstItem.Items.Count - 1))
{
    int offset = (sender == Up) ? -1 : 1;
    
    // 建立暫存項目
    ListItem temp = new ListItem(
        lstItem.SelectedItem.Text, 
        lstItem.SelectedItem.Value
    );
    
    // 交換 Text
    lstItem.Items[lstItem.SelectedIndex].Text = 
        lstItem.Items[lstItem.SelectedIndex + offset].Text;
    lstItem.Items[lstItem.SelectedIndex + offset].Text = temp.Text;
    
    // 交換 Value
    lstItem.Items[lstItem.SelectedIndex].Value = 
        lstItem.Items[lstItem.SelectedIndex + offset].Value;
    lstItem.Items[lstItem.SelectedIndex + offset].Value = temp.Value;
    
    // 更新選中索引 (視覺跟隨)
    lstItem.SelectedIndex += offset;
}

關鍵點解析

  • offset 變數統一處理上移 (-1) 與下移 (+1) 邏輯,避免重複代碼
  • 直接操作 Items[index].Text/Value 屬性進行就地交換,效率最高
  • 邊界檢查:上移需 SelectedIndex > 0,下移需 SelectedIndex < Count - 1
  • 同時交換 Text 與 Value,確保資料完整性 (Value 可能為資料庫主鍵)

執行介面展示

ListBox 程式執行介面

完整功能清單 (含上篇)

按鈕功能啟用條件
新增項目將文字框內容加入列表文字框非空
刪除移除選中項目有項目被選中
向上移位與上一項交換位置非第一項
向下移位與下一項交換位置非最後一項
至首項選中第一項列表非空
上一項選中上一項非第一項
下一項選中下一項非最後一項
至尾項選中最後一項列表非空

下篇預告

最終篇將展示完整的 ASP.NET WebForms 版本實作,包含完整 ASPX 標記與伺服器端代碼,示範相同功能在 Web 環境下的實現方式。

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