DataGridView中虚拟模式(Virtual Mode)如何大量数据 显示在DataGridView上 ?
PS: DataGridView分三列(名称,类型,时间 )

解决方案 »

  1.   

    实现CellValueNeeded事件不就可以了?
      

  2.   

    DataGridView的VirtualMode设为true,DataSource为空,自己手动添加3列。private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
            {
                YourItem item = GetYourItem(e.RowIndex);
                switch (e.ColumnIndex)
                {
                    case 0:
                        e.Value = item.Name;
                        break;
                    case 1: 
                        e.Value = item.Type;
                        break;
                    case 2:
                        e.Value = item.Time;
                        break;
                }
            }        private YourItem[] yourItems = new YourItem[10000];        private YourItem GetYourItem(int index)
            {
                if (yourItems[index] == null)
                {
                    yourItems[index] = LoadYourItem(index);
                }
                return yourItems[index];
            }        private YourItem LoadYourItem(int index)
            {
                return new YourItem() ;
            }        private void Form1_Load(object sender, EventArgs e)
            {
                dataGridView1.RowCount = 10000;
            }
      

  3.   

    如果设计时设定了DataSource,要在设定RowCount之前把DataSource设为null。
    实际应用中在后台开个线程加载数据,并优先加载当前页附近的数据效果更好