winform表格控件Word格式.docx
《winform表格控件Word格式.docx》由会员分享,可在线阅读,更多相关《winform表格控件Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
1实现思路
虽然excel可以制作样式复杂的表格,但是软件系统的数据都被存放在数据库内,因此必须编写代码将数据库文件内的数据输出到excel文件内,再将该excel文件内容显示到窗体上就可以满足用户需求。
具体实现思路如下:
①按照用户设计的表格样式,用excel制作表格模板文件;
②为了不破坏模板文件,在使用文件之前,通过代码复制模板文件,以后的所有操作都在新文件上执行;
③编写c#程序,通过技术从数据库内提取数据,向excel文件的指定单元格输出数据并保存文件;
④将excel文件嵌入到窗体中,供用户浏览修改,并可以保存修改后的内容。
2c#中控制excel文件的方法
2.1引用excel类型库
在c#中控制excel文件的前提是添加excel的引用。
根据计算机上安装的excel软件版本的不同,组件名称和类型库的版本也不一样,此处excel的版本为20xx版本,因此com组件名称为microsoftexcel11.0objectlibrary。
引用excel类型库的具体操作方法为:
①在解决方案资源管理器中,右击“引用”菜单项,选择“添加引用”;
②在“添加引用”对话框中,选择
篇二:
winform调用wpF窗体及wpF中grid绘制表格
winForm调用wpF窗体及wpF中grid绘制表格背景
质检模块,操作工根据工序和物料编码,确定需要填写的质检单,由于质检单的格式多样化,普通的表格控件无法满足需求,它们基本是每一列固定一种显示方式。
但质检模块涉及的表单,根据相关属性值的不同,同一列不同行的显示方式、操作不同,而且涉及单元格合并等。
因此想到利用wpF中grid自绘表格。
由于整个系统是winForm程序,这就需要使用在winForm中调用wpF窗体。
方法
1.winForm调用wpF窗体
1)在winForm工程的解决方案资源管理器中,在对应的解决方案中新建或者添加现有的wpF用户控件工程
2)在wpF中创建自定义的控件,或添加wpF控件至面板上
3)在winForm面板上添加elementhost控件4)生成解决方案后,在刚刚的elementhost中的child属性中添加自建的wpF生成的控件
5)注意:
调用wpF窗体,需要为项目添加wpF相关引用,如图1-1所示:
图1-1wpF相关引用文件
2.wpF中grid绘制表格:
1)定义好要绘制表格的行数和列数,同时可以定义
好行高和列宽,如图2-1:
图2-1画表格
2)表格边框可以在画表格的同时就画好,这种方式适合表格固定的情况;
也可以在添加表格内容的时候,逐一添加,如图2-2。
图2-2画边框
3)添加表格内容
a)确定单元格显示形式,如textblock、textbox、label、Radiobutton
等。
b)步骤:
新建一个控件,内容属性的一些设置,确定填充位置,添加
至需要显示的grid中。
若有需要,可进行数据绑定。
详细如图2-3。
图2-3单元格填充
图2-4单元格填充
效果如下示例图:
图2-5示例图
3.wpF后台数据绑定:
篇三:
c#winForm开发datagridView控件的各种操作总结
c#winForm开发
datagridView控件的各种操作总结
一、单元格内容的操作.....................................................................................................2
1.1.取得当前单元格内容............................................................................................2
1.2.datagridView设定单元格只读:
.........................................................................2
1.3.datagridView行头列头的单元格.........................................................................2
1.4.datagridView单元格的tooltip的设置................................................................2
1.5.datagridView的单元格的边框、网格线样式的设定...........................................3
1.6.datagridView单元格表示值的自定义..................................................................4
1.7.datagridView用户输入时,单元格输入值的设定.................................................4
二、行/列的操作..............................................................................................................5
2.1.datagridView不显示最下面的新行:
..................................................................5
2.2.datagridView
2.3.datagridView
2.4.datagridView
2.5.datagridView判断新增行:
................................................................................5行的用户删除操作的自定义:
........................................................5行、列的隐藏和删除:
..................................................................6禁止列或者行的Resize:
...............................................................6
2.6.datagridView列宽和行高自动调整的设定:
........................................................7
2.7.datagridView冻结列或行....................................................................................8
2.8.datagridView列顺序的调整................................................................................8
2.9.datagridView新加行的默认值的设定..................................................................8
三、针对datagridview全局属性的设置.............................................................................9
3.1.使用editmode属性............................................................................................9
3.2.根据条件设定单元格的不可编辑状态...................................................................9
3.3.datagridView剪切板的操作................................................................................9
3.4.datagridView的右键菜单(contextmenustrip).................................................10
3.5.cellcontextmenustripneeded、Rowcontextmenustripneeded事件........................10
四、是用Virtual模式.....................................................................................................12
一、单元格内容的操作
1.1.取得当前单元格内容console.writeline(datagridView1.currentcell.Value);
//取得当前单元格的列index
console.writeline(datagridView1.currentcell.columnindex);
//取得当前单元格的行index
console.writeline(datagridView1.currentcell.Rowindex);
另外,使用datagridView.currentcelladdress属性(而不是直接访问单元格)来确定单元格所在的行:
datagridView.currentcelladdress.y和列:
*****.x。
这对于避免取消共享行的共享非常有用。
当前的单元格可以通过设定datagridView对象的currentcell来改变。
可以通过currentcell来设定datagridView的激活单元格。
将currentcell设为nothing(null)可以取消激活的单元格。
//设定(0,0)为当前单元格
datagridView1.currentcell=datagridView1[0,0];
在整行选中模式开启时,你也可以通过currentcell来设定选定行。
*注意:
this.datagridView的索引器的参数是:
[columnindex,rowindex]或是
[columnname,rowindex],这与习惯不同。
使用Readonly属性
如果希望,datagridView内所有单元格都不可编辑,那么只要:
//设置datagridView1为只读
datagridView1.Readonly=true;
此时,用户的新增行操作和删除行操作也被屏蔽了。
如果希望,datagridView内某个单元格不可编辑,那么只要:
//设置datagridView1的第2列整列单元格为只读
datagridView1.columns[1].Readonly=true;
//设置datagridView1的第3行整行单元格为只读
datagridView1.Rows[2].Readonly=true;
//设置datagridView1的[0,0]单元格为只读
datagridView1[0,0].Readonly=true;
1.3.datagridView行头列头的单元格
//改变datagridView1的第一列列头内容
datagridView1.columns[0].headercell.Value="
第一列"
;
//改变datagridView1的第一行行头内容
datagridView1.Rows[0].headercell.Value="
第一行"
//改变datagridView1的左上头部单元内容
datagridView1.topleftheadercell.Value="
左上"
另外你也可以通过headertext来改变他们的内容。
datagridView1.columns[0].headertext="
1.4.datagridView单元格的tooltip的设置
datagridView.showcelltooltips=true的情况下,单元格的tooltip可以表示出来。
对于单元格窄小,无法完全显示的单元格,tooltip可以显示必要的信息。
1)设定单元格的tooltip内容
//设定单元格的tooltip内容
datagridView1[0,0].tooltiptext="
该单元格的内容不能修改"
//设定列头的单元格的tooltip内容
datagridView1.columns[0].tooltiptext="
该列只能输入数字"
//设定行头的单元格的tooltip内容
datagridView1.Rows[0].headercell.tooltiptext="
该行单元格内容不能修改"
2)celltooltiptextneeded事件
在批量的单元格的tooltip设定的时候,一个一个指定那么设定的效率比较低,这时候可以利用celltooltiptextneeded事件。
当单元格的tooltiptext变化的时候也会引发该事件。
注意仅当datagridView的datasource被指定或者Virualmode=true的时候,该事件才会被引发。
//celltooltiptextneeded事件处理方法
privatevoiddatagridView1_celltooltiptextneeded(objectsender,
datagridViewcelltooltiptextneededeventargse)
{
e.tooltiptext=e.columnindex.tostring()+"
"
+e.Rowindex.tostring();
}
1.5.datagridView的单元格的边框、网格线样式的设定
1)datagridView的边框线样式的设定
datagridView的边框线的样式是通过datagridView.borderstyle属性来设定的。
borderstyle属性设定值是一个borderstyle枚举:
Fixedsingle(单线,默认)、Fixed3d、none。
2)单元格的边框线样式的设定
单元格的边框线的样式是通过datagridView.cellborderstyle属性来设定的。
cellborderstyle属性设定值是datagridViewcellborderstyle枚举。
(详细参见msdn).另外,通过datagridView.columnheadersborderstyle和Rowheadersborderstyle属性可以修改datagridView的头部的单元格边框线样式。
属性设定值是
datagridViewheaderborderstyle枚举。
3)单元格的边框颜色的设定
单元格的边框线的颜色可以通过datagridView.gridcolor属性来设定的。
默认是controldarkdark。
但是只有在cellborderstyle被设定为single、singlehorizontal、
singleVertical的条件下才能改变其边框线的颜色。
同样,columnheadersborderstyle以及Rowheadersborderstyle只有在被设定为single时,才能改变颜色。
4)单元格的上下左右的边框线式样的单独设定cellborderstyle只能设定单元格全部边框线的式样。
要单独改变单元格某一边边框式样的话,需要用到datagridView.advancedcellborderstyle属性。
如示例:
//单元格的上边和左边线设为二重线
//单元格的下边和右边线设为单重线
datagridView1.advancedcellborderstyle.top=_
datagridViewadvancedcellborderstyle.insetdouble
datagridView1.advancedcellborderstyle.Right=_
datagridViewadvancedcellborderstyle.inset
datagridView1.advancedcellborderstyle.bottom=_datagridViewadvancedcellborderstyle.inset
datagridView1.advancedcellborderstyle.left=_
同样,设定行头单元格的属性是:
advancedRowheadersborderstyle,设定列头单元格属性是:
advancedcolumnheadersborderstyle。
1.6.datagridView单元格表示值的自定义
通过cellFormatting事件,可以自定义单元格的表示值。
(比如:
值为error的时候,单元格被设定为红色)下面的示例:
将“colmn1”列的值改为大写。
//cellFormatting事件处理方法
privatevoiddatagridView1_cellFormatting(objectsender,
datagridViewcellFormattingeventargse)
datagridViewdgv=(datagridView)sender;
//如果单元格是“column1”列的单元格
if(dgv.columns[e.columnindex].name=="
column1"
e.Value=str.toupper();
//应用该Format,Format完毕。
e.Formattingapplied=true;
cellFormatting事件的datagridViewcellFormattingeventargs对象的Value属性一开始保存着未被格式化的值。
当Value属性被设定表示用的文本之后,把Formattingapplied属性做为true,告知datagridView文本已经格式化完毕。
如果不这样做的话,datagridView会根据已经设定的Format,nullValue,datasourcenullValue,Formatprovider属性会将Value属性会被重新格式化一遍。
1.7.datagridView用户输入时,单元格输入值的设定通过datagridView.cellparsing事件可以设定用户输入的值。
下面的示例:
当输入英文文本内容的时候,立即被改变为大写。
//cellparsing事件处理方法
privatevoiddatagridView1_cellparsing(objectsender,
datagridViewcellparsingeventargse){
//单元格列为“column1”时
//解析完毕
e.parsingapplied=true;
二、行/列的操作
通常datagridView的最下面一行是用户新追加的行(行头显示*)。
如果不想让用户新追加行即不想显示该新行,可以将datagridView对象的allowusertoaddRows属性设置为False。
//设置用户不能手动给datagridView1添加新行
datagridView1.allowusertoaddRows=false;
但是,可以通过程序:
datagridViewRowcollection.add为datagridView追加新行。
补足:
如果datagridView的datasource绑定的是dataView,还可以通过设置dataView.allowadd属性为False来达到同样的效果。
2.2.datagridView判断新增行:
datagridView的allowusertoaddRows属性为true时也就是允许用户追加新行的场合下,datagridView的最后一行就是新追加的行(*行)。
使用datagridViewRow.isnewRow属性可以判断哪一行是新追加的行。
另外,通过datagridView.newRowindex可以获取新行的行序列号。
在没有新行的时候,newRowindex=-1。
if(datagridView1.currentRow.isnewRow)
console.writeline("
当前行为新追加行。
"
);
else
当前行不是新追加行。
2.3.datagridView行的用户删除操作的自定义:
1)无条件的限制行删除操作。
默认时,datagridView是允