日期:2014-05-17  浏览次数:21076 次

DataGridView Rows.Insert 插入DataGridViewRow对象到首行 Row对象 被偷换的 问题。。。。加分。。。
本帖最后由 shigaofei1 于 2012-12-14 21:01:42 编辑
问题是这样的,简单来说就是要在第一行插入新行。。。

但是行的代码如下:
 
public class dgvRow:DataGridViewRow
        {
            public dgvRow(RowDataState rs)
            {
                RowState = new dgvRowState(this, rs);
            }
            public dgvRow()
            { 
            }
            public dgvRowState RowState { get; set; }
        }
        public enum RowDataState : byte
        {
            _none,
            _new,
            _db,
            _edit
        }

我调用的 方法如下:

  //从用户界面添加
        public void AddNewRow_UserAdd(int index)
        {

            dgvRow newrow = new dgvRow(RowDataState._new);
            //newrow.CreateCells(dgv);
            //dgv.Rows.Insert(index, 1);
            
            dgv.Rows.Insert(0, newrow);
            //dgv.Rows.Insert(index, newrow);
        }


问题描述:
我自己在AddNewRow_UserAdd方法中 实例化的 newrow
每次都不能插入到表中。。。
每次插入完成之后,表里面的并不是我插入的那个对象。。。
这是怎么回事。。。
程序也不报错。。。
二次描述:
简单来说就是 
第一行:dgvRow newrow = new dgvRow(RowDataState._new);
第二行:dgv.Rows.Insert(0,newrow);
第三行:if(dgv.Rows[0]!=newrow){MessageBox(为什么这里是不等于!!!);}
为什么第二行的Insert方法插入之后我检查dgv.Rows[0]中的对象不是newrow而是一个其他的未知的不知道从哪里冒出来的dgvRow类型的对象,不知道怎么Insert这个方法会替换掉我的那个第一行实例化的newrow对象吗?

newrow!=dgv.Rows[0]
???这是什么原因。。。请教 控件大神

------解决方案--------------------
dgvRowState是个什么东西 麻烦楼主给解释一下
下面是我测试的结果 因为lz代码可能给的不完整 导致在写类的时候无法得到dgvRowState 所以编译无法通过 我的做法是这样写的

        private void Form7_Load(object sender, EventArgs e)
   &nbs