public class dg : DataGridView
    {
        public dg()
        {            if (this.Columns.Count == 0)
            {
                this.Columns.Add("序号", "序号");
                this.Columns.Add("货号", "商品名称");
                this.Rows.Add(100);
            }
        }    }这样的代码会使列不断增加,2列变4列...6..8列我想让这个类每次拖到窗口中的时候自动创建列和行,然后可以对列进行编辑,这个想法可以行得通吗?

解决方案 »

  1.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace DataGridView
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            dataGridView1.Columns.Add("序号","序号");
                dataGridView1.Columns.Add("货号", "货号");
                dataGridView1.Columns.Add("商品名称", "商品名称");
                dataGridView1.Rows.Add(100);
            }        
        }
    }这样就会向空间中添加 3列 100行  空表格
      

  2.   

    this.Columns.Add("columnName", "headerText");
    原型是public virtual int Add(
    string columnName,
    string headerText
    )
    columnName表示此列在程序中的名字,headerText表示显示在列头的名称
      

  3.   


    我知道用这句啊,现在问题是当我把这个控件放到Form中,每次打开编辑的时候,总会重复添加列
      

  4.   

    我是需要直接把添加列的代码放到类中,而不是放到 Form 中
      

  5.   

    放到窗口中那还叫做类吗?就是为了方便才想放到自定义的表格类中,代码就是1楼那个类,新建一个Form,再拖进这个类,第一次是显示两列,保存再打开,就变成四列,以此类推....我想做一个表格类,里边默认就有 一些基本的列,序号,货号,规格等,并且已添加了相关的方法进行处理.在不同的窗口中使用,可以直接在窗口设计器中添加新的列,或删除一些基本列,以达到快速录入数据,显示数据的目的.现在我只要求解决一个问题,就是在构造函数中如何判断已添加有列,用 columns.count 根本就没作用.
      

  6.   

    前几天我在处理dataset的时候遇到了类似的问题 后来通过修改程序的逻辑结构解决了
      

  7.   

    这是我的代码  随便往form里拖dg对象 每次都会创建一个新的对象 保存后 再拖 也是创建新的对象 没有出现你的情况 你的代码是这样写的吗?  我的IDE是VS08  你的呢?using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            
                public Form1()
                {
                    InitializeComponent();                //dataGridView1.Columns.Add("序号", "序号");
                    //dataGridView1.Columns.Add("货号", "货号");
                    //dataGridView1.Columns.Add("商品名称", "商品名称");
                    //dataGridView1.Rows.Add(100);                           }        
           
        }    public  class dg : DataGridView
        {
            public dg()
            {            if (this.Columns.Count == 0)
                {
                    this.Columns.Add("序号", "序号");
                    this.Columns.Add("货号", "货号");
                    this.Columns.Add("商品名称", "商品名称");
                    this.Rows.Add(100);
                }
            }    }
    }
      

  8.   

    能重新建立一个项目 把我的代码复制进去 运行下 看看效果 如果还出错  就是你的IDE的问题了
      

  9.   

    ...楼上的解决的差不多了...
     呵呵,LZ的意思就是 每次都添加
     那你加载的时候清空没??>...
     还有,DataGridView的类...汗
     你是要把数据写到类里吧.通过构造函数.
     
      

  10.   

    相当于每次编辑窗口的时候,代码生成器会自动在 Form1.Designer.cs 文件中添加 ADD列的代码,导致列不断增加我想添加列的代码不应该放在构造函数中,因为在构造之前,根本就不知道已有多少列,Columns.Count在构造函数里边永远都是0
      

  11.   


    在构造里边Clear根本就没有用的,DataGridView的这个类我已写了上千行代码了,就卡在这了,现在只能通过添加一个方法 ,在窗口的 Load事件中调用来添加列,达不到在窗口设计的时候可视化处理,我想一定有办法解决的.
      

  12.   

    哈哈,终于找到解决的方法了,非常感谢大家的帮助    public class dg : DataGridView
        {
            public dg()
            {        }
            protected override void OnPaint(PaintEventArgs e)
            {
                if (this.Columns.Count == 0)
                {
                    this.Columns.Add("序号", "序号");
                    this.Columns.Add("货号", "货号");
                    this.Rows.Add(100);
                }
                base.OnPaint(e);
            }    }这样处理太爽了,拖到窗口中编辑的时候,可以直接看到更改单元格属性的效果,表格线效果等,还可以看到演示数据,可以任意编辑添加列,删除列