欢迎光临
我们一直在努力

DataGrid的常见问题-.NET教程,数据库应用

建站超值云服务器,限时71元/月

当我们刚接触datagrid时候,可能会对它不太熟悉,有时候一些常见的设置都会让你苦恼半天,鉴于此,我总结了一下它的比较常见的用法,希望能给刚接触datagrid的人一些帮助。

一 对每一列进行一些设置,这里就要我们对datagrid的列有一定的认识,它的列可分为两种,datagridtextboxcolumn 和 datagridboolcolumn 。当然你也可以添加你自己的列的样式,只要继承datagridcolumnstyle就行了(当然还要重写一些方法)。

下面是一段代码:

datagridtablestyle style=new datagridtablestyle();

style.mappingname=ds.tables[0].tablename.tostring();

datagridboolcolumn colu=new datagridboolcolumn();

colu.mappingname="isselect";//映射到表的某一列

colu.headertext=""; //列的表头名字

colu.truevalue="y"; //打勾时的值

colu.falsevalue="n";

colu.width=40; //设置改列的宽度

colu.allownull=false; //不允许为null值

colu.readonly=true; //把改列设置为只读的

style.gridcolumnstyles.add(colu);

上面的代码就是创建了一个datagridboolcolumn列,该列就是一个checkbox列,checkbox有三种状态,true,false,null,你可以通过设置colu.allownull=false;取消第三种状态。

再看一段代码,它是创建 datagridtextbox列

datagridtextboxcolumn col;

col=new datagridtextboxcolumn();

col.mappingname="dminimumpv";

col.headertext="最低累积业绩";

col.alignment=horizontalalignment.right;//该列的对齐方式

col.format="#,###.00"; //设置显示的格式

col.width=90;

style.gridcolumnstyles.add(col);

相信这两段代码应该让你对datagrid的列的设置有了一定的了解了吧!

二 捕获datagrid里的双击事件,本来很简单的问题,可是如果你只对datagrid的doubleclicked里写程序的话,你就会发现一个问题,在datagrid的cell里双击时没有反应,这是因为在datagrid里有textbox组成,所以你就需要捕获textbox的doubleclicked事件,但你完成这一步时,看看效果咋样,如果你仔细的话,你就又会发现一个问题,当光标还没有在一个单元格时,双击该单元格,发现了什么?没有任何反应,明明双击了吗,为啥呢?这是因为datagrid把这个双击操作分解了,分为两个单击,第一个使该单元格获得光标,第二个为单击事件,所以你的双击就没有反应了,所以我们要做的就是把这个动作当作双击事件来处理,这样就达到我们的目的了。所以捕获一个双击事件就要做三件事。下面是一段代码。

第一步:

private void dgrole_doubleclick(object sender,system.eventargs e)

//dgrole为datagrid

{

this.frmrolerightshow(); //我们双击要做的事

}

第二步:

private void textbox_doubleclick(object sender,system.eventargs e)

{

this.frmrolerightshow();

}

第三步:

datetime gridmousedowntime;

private void dgrole_mousedown(object sender,system.windows.forms.mouseeventargs e)

{

gridmousedowntime=datetime.now; //纪录时间

}

private void textbox_mousedown(object sender,mouseeventargs e)

{

if(datetime.now < gridmousedowntime.addmilliseconds(systeminformation.doubleclicktime))

//如果两次单击的时间小于系统的双击时间,我们就把它认为是双击操作

{

this.frmrolerightshow();

}

}

三 怎样取某一个单元格的值?一行代码,如下:

string strrole=dgrole[row,column].tostring();

以上是我通过看csdn上的贴子和在实践中总结出来的,如果你对datagrid的使用有什么心得的话,不妨把它写出来,与大家分享。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » DataGrid的常见问题-.NET教程,数据库应用
分享到: 更多 (0)

相关推荐

  • 暂无文章