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

一个关于DataGridView显示的具体问题
目前在做一个工程的时候运用了DataGridView这个控件,个人觉得还是很好用的,好了不说废话,下面上问题描述:
    在控件添加有限条记录初始化以后,控件能够正常显示各项记录的条数(此时已经自动生成垂直滚动条)。然后再次向该控件后续添加一条记录(见代码一),这时候能够添加进去,但是我再把滚动条移动到底部,控件不能够把最后新添加的记录正常显示出来,仅仅显示新纪录那一行的三分之一,如果按键盘上的下按键(就是上下左右那四个按键,我不知道那个什么名字),控件也能够把新添加的记录完整显示出来,感觉就是DataGridView的ScrollBar显示的Maximum范围小于控件绘制的范围。

解决过程:
1、尝试添加一条新的记录后直接调用DataGridView 的Invalidate(),但是没有作用。
2、想通过调整DataGridView的ScrollBar的Maximum的值来修改显示范围,反正我没有试出来,DataGridView的scrollbar不知道怎么改,好像和一般的scrollbar不一样还是怎么的,这个没搞懂。
3、通过调整DataGridView的Size属性后再调用Invalidate(),此时能够解决问题。(见代码二)

只是不知道为什么这样能解决问题,不明白是怎么做到的,难道是我的DataGridView的大小设置得太小了?
我的DataGridView.Height属性值为77,求大神指点啊~~~~~如果有大神能够告诉我DataGridView里面的Scrollbar属性怎么设置同样感激不尽.....
小弟分不多= =,万望不弃...
代码一:
DataGridViewRow _dgvr = new DataGridViewRow();
_dgvr.CreateCells(dataGridView1);
_dgvr.Cells[0].Value = -100;
 ......///value add to cells
 dataGridView1.Rows.Add(_dgvr);//record add to dataGridView1

代码二:
if (dataGridView2.Size.Height >= dataGridView2.Height)
{
   Size _t = dataGridView2.Size;
   _t.Height += dataGridView2.CurrentRow.Height;
   dataGridView2.Size = _t;
   dataGridView2.Invalidate();
}

------解决方案--------------------
f (dataGridView2.Size.Height >= dataGridView2.Height)
{
   Size _t = dataGridView2.Size;
   _t.Height += dataGridView2.CurrentRow.Height;
   dataGridView2.Size = _t;
   dataGridView2.Invalidate();
}
你这个代码不是高超过大小就整个控件图面无效么?
你可以试着设置Miximum来显示,那个Scrollbar默认就是both不用改了,调试这个Miximum来看看先
------解决方案--------------------
帮你顶下,这个问题我也遇到过,同求解决设置的问题
------解决方案--------------------
如果是WINFORM的用个容器然后停靠整个容器,如果是ASP道理一样,不要设置尺寸。
------解决方案--------------------
没遇到 你说的问题
我新建的时候 是吧 dgv转成 dt 之后 dt.NewRow()

------解决方案--------------------
我建议使用Dev第三方控件的GridView,更美观,使用方便,减少开发周期!可以考虑考虑!
------解决方案--------------------
放置和停靠是不同概念,停靠就是不需设置长宽尺寸