DataGridView.Virtual = True执行时,Grid将在最后自动生成一新行,当此行获得焦点时,如果手工用键盘输入数据,则会在此行后新成新行。但如果用代码自动给当前行中各Cell赋值,则不会产行新行,而我希望做到此时也能产生新行,请问如何解决!!在线等待,解决后立刻给分,谢谢各位!

解决方案 »

  1.   

    Try It
    编辑完毕,执行
    DataGridView1.EndEdit()==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
    联系方式:Q64180940(请清楚注明业务还是技术咨询)  全天在线
    ==================================================================
      

  2.   

    你可以在赋值后让datagridview的总行数+1,这样就可以了啊.this.dGView.Rows.Add(); 或 this.dGView.RowCount +=1;
      

  3.   

    复lovingkiss: .EndEdit() 刚试过了,没有任何反应复tincyik(小天) :this.dGView.Rows.Add();  报错,错误信息为:当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
                     this.dGView.RowCount 属性只读
    谢谢两位,还有其他方法吗
      

  4.   

    不可能啊,我刚试一了下,可以的,而且以前我也是这样做的.
    你仔细检查一下是不是DataGridView的那些属性限制了。我也没碰到这样的情况过.
      

  5.   

    ----控件被数据绑定
    直接在数据源datatable里面添加行就可以了DataRow newrow = ds1.Tables["rsda"].NewRow();
    newrow["jrdwsj"] = ???;
    newrow["htjsrq"] = ???;
    ds1.Tables["rsda"].Rows.Add(newrow);
      

  6.   

    对绑定DataGridView的数据集的表进行操作,直接在datatable里加行,删行,修改某行某列的值.
    是不用对DataGridView操作的
      

  7.   

    多谢各位,问题解决了!
    综合了一下,与大家分享:
    1.DataGridView.Virtual = True
    2.DataGridView.AllowUserToAddRows = false;
    3.绑定数据源后,手动在数据源增加一行 (目的是操作过程中,最后一行获某列获得焦点将会显示一个按钮,点击会弹出数据选择框,并给此行进行赋值)
    4.在第3步赋值后,接着对数据源创建一新空行。(需要检查第三步操作的是否为新行)以此保证GRID最后一行永远为空行。
    开始散分啦
      

  8.   

    一直写错个属性DataGridView.VitualMode (嘿嘿)