当前位置: 首页 > 编程笔记 >

C#处理datagridview虚拟模式的方法

孟花蜂
2023-03-14
本文向大家介绍C#处理datagridview虚拟模式的方法,包括了C#处理datagridview虚拟模式的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#处理datagridview虚拟模式的方法。分享给大家供大家参考。具体如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace VirtualMode
{
  partial class VirtualModeForm : Form
  {
   private List<DataObject> m_Data = new List<DataObject>();
   private List<bool> m_Visited = new List<bool>();
   public VirtualModeForm()
   {
     InitializeComponent();
     m_Grid.CellValueNeeded += OnCellValueNeeded;
     m_GetVisitedCountButton.Click += OnGetVisitedCount;
     InitData();
     InitGrid();
   }
   private void InitData()
   {
     for (int i = 0; i < 1000001; i++)
     {
      m_Visited.Add(false);
      DataObject obj = new DataObject();
      obj.Id = i;
      obj.Val = 2 * i;
      m_Data.Add(obj);
     }
   }
   private void InitGrid()
   {
     m_Grid.VirtualMode = true;
     m_Grid.ReadOnly = true;
     m_Grid.AllowUserToAddRows = false;
     m_Grid.AllowUserToDeleteRows = false;
     m_Grid.ColumnCount = 3;
     m_Grid.Rows.Add();
     m_Grid.Rows.AddCopies(0, 1000000);
     // Uncomment the next line and comment out the 
     // the rest of the method to switch to data bound mode
     //m_Grid.DataSource = m_Data;
   }
   private void OnCellValueNeeded(object sender,
     DataGridViewCellValueEventArgs e)
   {
     m_Visited[e.RowIndex] = true;
     if (e.ColumnIndex == 0)
     {
      e.Value = m_Data[e.RowIndex].Id;
     }
     else if (e.ColumnIndex == 1)
     {
      e.Value = m_Data[e.RowIndex].Val;
     }
     else if (e.ColumnIndex == 2)
     {
      Random rand = new Random();
      e.Value = rand.Next();
     }
   }
   private void OnGetVisitedCount(object sender, EventArgs e)
   {
     int count = 0;
     foreach (bool b in m_Visited)
     {
      if (b) count++;
     }
     MessageBox.Show(count.ToString());
   }
    private void VirtualModeForm_Load(object sender, EventArgs e)
    {
    }
  }
  public class DataObject
  {
   private int m_Id;
   private int m_Val;
   public int Val
   {
     get { return m_Val; }
     set { m_Val = value; }
   }
   public int Id
   {
     get { return m_Id; }
     set { m_Id = value; }
   }
  }
}

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 我知道在C++中没有什么比虚拟模板方法更好的了,但似乎它正是我所需要的。有什么办法可以让我使用吗?我很感谢任何建议。 我想通过add方法将实体添加到向量中,这些实体需要是虚拟的,也需要模板,如何避免这种情况?

  • 客户用的香港虚拟主机,短短十几天,服务商送的10G的流量就被用完了,像这种情况有什么好的办法来处理没?现实情况就是用的虚拟主机。

  • 本文向大家介绍C#中DataGridView的样式,包括了C#中DataGridView的样式的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中DataGridView的样式。分享给大家供大家参考。具体如下: 1、设置grid交替行颜色 2、单元格内容有效性检查 3、 单元格的选择模式 4、设置合适的列宽 希望本文所述对大家的C#程序设计有所帮助。

  • 相比之下,Java确实允许虚拟泛型方法。这里也清楚了如何实现:Java泛型在运行时被删除,因此泛型方法是运行时的常用方法,因此不需要修改。 但是现在到了C#。C#确实有具体化的泛型。对于具体化泛型,特别是当使用值类型作为类型参数时,泛型方法必须有不同的版本。但是我们遇到了与C++相同的问题:每当对泛型方法进行新的实例化时,我们都需要修改vtable。 我对C#的内部工作没有太深的了解,所以我的直觉

  • 本文向大家介绍VMware虚拟机使用NAT模式上网的方法,包括了VMware虚拟机使用NAT模式上网的方法的使用技巧和注意事项,需要的朋友参考一下 VMware虚拟机使用NAT模式上网,供大家参考,具体内容如下 1、目的 我在前一篇博客中分享了虚拟机中安装windows7系统的方法,那么在这篇博客中我就分享VMware虚拟机使用NAT模式下接入互联网的操作。 2、具体操作 1)我将物理机接入校园网

  • 我对虚拟函数感到困惑。有人告诉我,父类中的虚拟意味着我可以在子类中覆盖它。但是,如果我省略父类中的虚拟,我仍然可以覆盖它。