ฉันมี Dictionary (Of long, Class)
คลาสมีคุณสมบัติหลายอย่าง และฉันต้องการดูข้อมูลของพจนานุกรมนี้ใน DataGridView ดังนั้นฉันจึงใช้:
DataGridView1.DataSource = Dictionary.Values.ToArray
ขณะนี้ คุณสมบัติภายในออบเจ็กต์คลาสสำหรับบันทึกภายในพจนานุกรมกำลังอัปเดตอย่างต่อเนื่อง (บ่อยเกินไป) และฉันต้องการสะท้อนการอัปเดตเหล่านี้ไปยัง DataGridView โดยตรง
ฉันเชื่อว่าการใช้ DataGridView1.DataSource = Dictionary.Values.ToArray
ทุกครั้งไม่ใช่วิธีที่มีประสิทธิภาพและจะใช้พลังการประมวลผลมาก ฉันจะทำให้ Dictionary Bindable ได้อย่างไร (เช่นใน DataTables เป็นต้น) ฉันต้องการสิ่งนี้ใน VB.NET ฉันพยายามใช้ Linq เพื่อแก้ไขปัญหานี้ (พบได้ที่นี่ https://stackoverflow.com/a/855954/2546348) แต่ถึงกระนั้น ฉันก็ยังไม่เห็นการอัปเดตใหม่ที่จะมาใน DataGridView
มีข้อเสนอแนะอะไรบ้าง? อะไรจะเป็นแนวทางที่ดีที่สุดในการดำเนินการนี้?
INotifyPropertyChanged
เมื่อเสร็จแล้ว คุณสามารถผูก[Dictionary].Values
ของคุณกับ BindingSource จากนั้นผูก DGV กับ BindingSource (ตั้งค่า.DataSource = [TheBindingSource]
ของ DGV) การเปลี่ยนแปลงค่าพจนานุกรมจะมีผลใน DGV ทันที - person Jimi   schedule 11.11.2019[Dictionary].Values
จะไม่คงที่ (การอ้างอิง ValueCollection พื้นฐานจะได้รับการอัปเดตเมื่อคุณเพิ่ม/ลบไปยัง/จากพจนานุกรม) แต่ก็ไม่ทำให้เกิดการแจ้งเตือนการเปลี่ยนแปลงรายการ (จริงๆ แล้วมีวิธีต่างๆ แต่ฉันจะไม่ แนะนำใด ๆ :) คุณสามารถ: 1) เพิ่มรายการใหม่ลงใน BindingSource (วัตถุTValue
พร้อมด้วยBindingSource.Add([object])
) ซิงค์พจนานุกรมเมื่อจำเป็น 2) สร้างคลาสของคุณเองที่สืบทอดมาจาก Dictionary‹TKey, TValue› และใช้อินเทอร์เฟซIBindingList
3) ใช้ DataTable แทนพจนานุกรม - person Jimi   schedule 12.11.2019Dictionary<TKey, TValue>
แต่จัดเตรียม ValueCollection ในรูปแบบของตัวเองเมื่อผูกกับข้อมูล ผ่านวิธีการIBindingList
และ รายการที่เข้าใจกันทั่วไป/ตีความการเปลี่ยนแปลงการแจ้งเตือน - person Jimi   schedule 12.11.2019