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

C# DataSet 雙擊 ListBox 僅首次響應數據刷新問題排查

     編輯:程式設計疑難解答

現象

雙擊 ListBox 不同項,第一次能正確顯示對應數據到 Label,後續雙擊仍顯示第一次的數據。

可能原因與排查步驟

  1. 變量 a 未更新:
    斷點調試 ListBox_DoubleClick 事件,檢查 a (索引/ID) 是否隨選中項變化。
    常見錯誤:使用了類級字段 a 但在事件中未重新賦值。
  2. DataSet/DataTable 未重新綁定:
    若每次查詢都 Fill 同一 DataTable 且未 Clear(),會導致數據疊加;
    修正:dt.Clear(); adapter.Fill(dt); 或每次 new DataTable()。
  3. 緩存機制干擾:
    DataSet 本身不緩存查詢結果,但 TableAdapter / BindingSource 可能緩存;
    嘗試 bindingSource.ResetBindings(false);。
  4. 事件重複綁定:
    在 Form_Load 中多次 += DoubleClick 導致事件觸發多次,最後一次覆蓋顯示;
    檢查設計器生成代碼或用 -= 先移除再添加。

調試建議

private void listBox1_DoubleClick(object sender, EventArgs e) {
    var idx = listBox1.SelectedIndex;
    Console.WriteLine($"DoubleClick index={idx}");  // 觀察輸出窗口
    if (idx < 0) return;
    // 此處打斷點,檢查 a、DataRow、Label.Text 變化
    var row = dataTable.Rows[idx];
    label1.Text = row["name"].ToString();
}

總結

核心問題多為「選中索引未正確獲取」或「數據源未同步更新」。斷點觀察 SelectedIndex 變化是最快定位路徑。

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