winForm
自定义控件攻略之二
——winForm中为DataGrid指定列标题和列宽
51长假已经开始了,很多人已经上路或者准备上路——外出旅游了吧,小生祝大家玩得开心,回头可以贴些照片来弊站,借你们的余热暖暖,不至于让这里太冷。
想必另一些朋友已经安排加班了,远游是不行了,不过值得开心的是:银子没少赚吧!
记得我们的网站是www.pshf.cn,有你同行,我的世界更精彩。
好了,我们言归正传,开始我们的WinForm自定义控件了解,今天给大家切磋一下怎样
为DataGrid指定列标题和列宽。
我们知道,DataGrid在可编辑状态下双击Cell时我们无从捕捉该双击,原因是焦点落到了Cell里了,而DataGrid没有提供Cell的双击事件。下面我们自己动手为DataGrid增加单击Cell、双击Cell、光标进入Cell事件,如果你愿意,你可以为DataGrid的Cell增加所有TextBox所拥有的事件,因为你可以把DataGrid中的Cell当成一个个的TextBox看。
1
、接《
winForm
自定义控件攻略之二——winForm中为DataGrid增加单元格响应事件
》在自定义的DataGrid中增加如下方法
///
<summary>
///
绑定列头(列头名和宽度)
///</summary>
///<param name="ColumnTxt">
列头名
</param>
///<param name="ColumnWid">
宽度
</param>
public void BindColumnTxtWid(string[] ColumnTxt, int[] ColumnWid)
{
int ColumnsCount = 0;
ColumnsCount = (this.DataSource as DataTable).Columns.Count;
GridColumnStylesCollection gcolStyles = CurrTableStyle.GridColumnStyles;
for (int i = 0; i < ColumnsCount; i++)
{
if (i < ColumnTxt.Length)
{
gcolStyles[i].HeaderText = ColumnTxt[i].ToString();
}
if (i < ColumnWid.Length)
{
gcolStyles[i].Width = ColumnWid[i];
//
设置隐藏列TabStop=false
if (ColumnWid[i]==0)
((DataGridTextBoxColumn)gcolStyles[i]).TextBox.TabStop = false;
}
}
}
2
、我们界面可如下方式使用,其中RulX.ColumnTxt和RulX.ColumnWid是在规则层(如果分层开发,建议这样做,当然我们也可以在界面层定义)类RulX中定义的数组常量
//
绑定数据网格
this.dgv.SetDataBinding(ds.Tables[0], "");
this.dgv.BindColumnTxtWid(RulX.ColumnTxt, RulX.ColumnWid);
|
下篇预告:
winForm
自定义控件攻略之三
——自定义Label、TextBox、Button、Group、Combox
winForm
自定义控件攻略之四
——DataGrid中行数据自动帮定到TextBox等编辑控件