DataGridView控件用法(二):为每行记录最后加“编辑”-“删除”按钮列

1. 在DataGridView控件用法(一)中已经显示出列表数据,这时我们需要对每行数据记录进行编辑,需要添加“编辑”、“删除”、“查看”这样的超链接。代码如下:

1//为每行数据增加编辑列。
2//设定列不能自动作成
3UserdataGridView.AutoGenerateColumns = false;
4//创建一个DataGridViewLinkColumn列
5DataGridViewLinkColumn dlink = new DataGridViewLinkColumn();
6dlink.Text = "编辑";//添加的这列的显示文字,即每行最后一列显示的文字。
7dlink.Name = "linkEdit";
8dlink.HeaderText = "编辑";//列的标题
9dlink.UseColumnTextForLinkValue = true;//上面设置的dlink.Text文字在列中显示
10UserdataGridView.Columns.Add(dlink);//将创建的列添加到UserdataGridView中
11
12//同上方法为每条记录创建“删除”超链接
13DataGridViewLinkColumn dlink2 = new DataGridViewLinkColumn();
14dlink2.Text = "删除";
15dlink2.Name = "linkDelete";
16dlink2.HeaderText = "删除";
17dlink2.UseColumnTextForLinkValue = true;
18UserdataGridView.Columns.Add(dlink2);
19
20//同上方法为每条记录创建“查看”超链接
21DataGridViewLinkColumn dlink3 = new DataGridViewLinkColumn();
22dlink3.Text = "查看";
23dlink3.Name = "linkView";
24dlink3.HeaderText = "查看";
25dlink3.UseColumnTextForLinkValue = true;
26UserdataGridView.Columns.Add(dlink3);

执行效果如下:

PS:上述是自己编写代码实现这些按钮,你也可以在设计器中利用属性栏来添加(通过直接点击DataGridView的编辑列,点击“添加”,选择“未绑定列”,选择类型为“DataGridViewButtonColumn”)。

同理:单元格显示按钮(DataGridViewButtonColumn),添加下拉框(DataGridViewComboBoxColumn),显示选择框(DataGridViewCheckBoxColumn) 方法也是这样。实际上DataGridViewColumn有六种派生类: DataGridViewButtonColumn,DataGridViewCheckBoxColumn,DataGridViewComboBoxColumn,DataGridViewImageColumn

DataGridViewLinkColumn 和DataGridViewTextBoxColumn,你可以根据自己不同需要选择不同列的类型,用法一样,只是类不同而已。

DataGridViewButtonColumn用法如下:

1//设定列不能自动作成
2UserdataGridView.AutoGenerateColumns = false;
3//创建一个DataGridViewButtonColumn按钮列
4DataGridViewButtonColumn dbtEdit = new DataGridViewButtonColumn();
5dbtEdit.Text = "编辑";//添加的这列的显示文字,即每行最后一列显示的文字。
6dbtEdit.Name = "buttonEdit";
7dbtEdit.HeaderText = "编辑";//列的标题
8dbtEdit.UseColumnTextForButtonValue = true;//上面设置的dlink.Text文字在列中显示
9dbtEdit.Width = 66;
10UserdataGridView.Columns.Add(dbtEdit);//将创建的列添加到UserdataGridView中
11
12//创建“删除”按钮
13DataGridViewButtonColumn dbtDelete = new DataGridViewButtonColumn();
14dbtDelete.Text = "删除";
15dbtDelete.Name = "buttonDelete";
16dbtDelete.HeaderText = "删除";
17dbtDelete.UseColumnTextForButtonValue = true;
18dbtDelete.Width = 66;
19UserdataGridView.Columns.Add(dbtDelete);
20
21//创建“查看”按钮
22DataGridViewButtonColumn dbtView = new DataGridViewButtonColumn();
23dbtView.Text = "查看";
24dbtView.Name = "buttonView";
25dbtView.HeaderText = "查看";
26dbtView.UseColumnTextForButtonValue = true;
27dbtView.Width = 66;
28UserdataGridView.Columns.Add(dbtView);

效果如下:

单元格添加下拉框,DataGridViewComboBoxColumn用法如下:

1DataGridViewComboBoxColumn dCombo = new DataGridViewComboBoxColumn();
2dCombo.Items.Add("管理员");
3dCombo.Items.Add("会员");
4dCombo.Items.Add("用户");
5dCombo.Name = "dCombo";
6//该列显示的位置
7//dcombo.DisplayIndex = 1;
8dCombo.HeaderText = "角色";
9
10//绑定数据库的值时使用以下属性
11//dCombo.DataSource = ds1 //ds1为从要显示的数据库表中查出来的数据集,如DatsSet等。
12//dCombo.DataPropertyName = "USER_ID";//绑定的列
13
14UserdataGridView.Columns.Add(dCombo); 

效果如下:

注意:上图左边的下拉框无法展开下面的数据,因为dataGridView的下拉框是在编辑表格可以编辑状态时才能拉出下面的选项,也就是说需要在dataGridView的ReadOnly属性为false的情况下,才可点击展开下面的数据,如上右图。

上述代码创建了一个下拉列表,默认显示的下拉框,选择时需要点击三次,第一次选中单元格,第二次启用编辑,第三次打开下拉框。如果需要一次点击打开下拉框,可以启用DataGridView的CellEnter()事件,代码如下:

1private void UserdataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
2{
3//实现单击一次显示下拉列表框
4if (UserdataGridView.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && e.RowIndex != -1)
5{
6SendKeys.Send("{F4}");
7}
8}

PS:还可以将下拉框动态绑定数据库。通过dCombo.DataSource和dcombo.DataPropertyNam来设置该下拉框数据来自的数据源,和绑定的列,具体用法略。

单元格添加复选框和图片控件,DataGridViewCheckBoxColumnDataGridViewImageColumn用法如下:

1//DataGridView显示复选框
2DataGridViewCheckBoxColumn checkBox = new DataGridViewCheckBoxColumn();
3checkBox.HeaderText = "选择框";
4checkBox.Name = "checkbox";
5checkBox.AutoSizeMode =
6DataGridViewAutoSizeColumnMode.DisplayedCells;
7checkBox.FlatStyle = FlatStyle.Standard;
8//显示选择框的三种状态
9checkBox.ThreeState = true;
10UserdataGridView.Columns.Add(checkBox);
11
12//DataGridView显示图像
13DataGridViewImageColumn dgvI = new DataGridViewImageColumn();
14dgvI.Name = "Image";
15dgvI.ValuesAreIcons = false;
16dgvI.Image = new Bitmap("F://ashin.jpg");
17dgvI.ImageLayout = DataGridViewImageCellLayout.Zoom;
18dgvI.Description = "测试的图片";
19UserdataGridView.Columns.Add(dgvI);

效果如下:

2. 按钮触发的事件。添加了这些按钮是为了点击跳到不同的程序段执行不同的功能,拦截鼠标点击触发的事件函数如下:

3. DataGridView中合并列。上述我们添加的3个按钮在3个列中,而我们希望这3个列能有一个共同的表头可以叫做“编辑”或“操作”。但在WinForm中我们常用的DataGridView控件,不支持在一列中显示多个按钮。怎么办?网上对DataGridView控件的列或行的合并有很多博文,大致思想有2种,一种是设法让其一列可以显示多个按钮,另一种是每列显示一个按钮(如本文上面的做法),然后将这3列合并,合并的时候是利用DataGridView的CellPainting事件对表头进行重绘,网友们说该方法存在页面往下拉动时表格绘制偏差或绘制延迟不刷新等问题,似乎后面这种方法用的多些。总之无论哪种方法实现起来都貌似比较繁琐,时间有限,我只是练练手(本身就是新手),弄个小程序而已,不想花太多时间研究这个小细节,等以后有空,再回来仔细研究研究。下面给个合并列的例子,有个朋友是这样实现二维表头的,代码如下:

1int top = 0;
2int left = 0;
3int height = 0;
4int width1 = 0;
5private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
6{
7#region 重绘datagridview表头
8DataGridView dgv = (DataGridView)(sender);
9if (e.RowIndex == -1 && (e.ColumnIndex == 3 || e.ColumnIndex == 4))
10{
11//e.CellStyle.Font = new Font(dataGridView1.DefaultCellStyle.Font, FontStyle.Bold);
12//e.CellStyle.WrapMode = DataGridViewTriState.True;
13if (e.ColumnIndex == 3)
14{
15top = e.CellBounds.Top;
16left = e.CellBounds.Left;
17height = e.CellBounds.Height;
18width1 = e.CellBounds.Width;
19}
20
21int width2 = this.dataGridView1.Columns[4].Width;
22
23Rectangle rect = new Rectangle(left, top, width1 + width2, e.CellBounds.Height);
24using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor))
25{
26//抹去原来的cell背景
27e.Graphics.FillRectangle(backColorBrush, rect);
28}
29
30using (Pen gridLinePen = new Pen(dgv.GridColor))
31{
32e.Graphics.DrawLine(gridLinePen, left, top, left + width1 + width2, top);
33e.Graphics.DrawLine(gridLinePen, left, top + height / 2, left + width1 + width2, top + height / 2);
34e.Graphics.DrawLine(gridLinePen, left + width1, top + height / 2, left + width1, top + height);
35
36//计算绘制字符串的位置
37string columnValue = Year;
38SizeF sf = e.Graphics.MeasureString(columnValue, e.CellStyle.Font);
39float lstr = (width1 + width2 - sf.Width) / 2;
40float rstr = (height / 2 - sf.Height) / 2;
41//画出文本框
42if (columnValue != "")
43{
44e.Graphics.DrawString(columnValue, e.CellStyle.Font, new SolidBrush(e.CellStyle.ForeColor),
45left + lstr,
46top + rstr,
47StringFormat.GenericDefault);
48}
49
50//计算绘制字符串的位置
51columnValue = "局网台资产额";
52sf = e.Graphics.MeasureString(columnValue, e.CellStyle.Font);
53lstr = (width1 - sf.Width) / 2;
54rstr = (height / 2 - sf.Height) / 2;
55//画出文本框
56if (columnValue != "")
57{
58e.Graphics.DrawString(columnValue, e.CellStyle.Font, new SolidBrush(e.CellStyle.ForeColor),
59left + lstr,
60top + height / 2 + rstr,
61StringFormat.GenericDefault);
62}
63
64//计算绘制字符串的位置
65columnValue = "网络资产额";
66sf = e.Graphics.MeasureString(columnValue, e.CellStyle.Font);
67lstr = (width2 - sf.Width) / 2;
68rstr = (height / 2 - sf.Height) / 2;
69//画出文本框
70if (columnValue != "")
71{
72e.Graphics.DrawString(columnValue, e.CellStyle.Font, new SolidBrush(e.CellStyle.ForeColor),
73left + width1 + lstr,
74top + height / 2 + rstr,
75StringFormat.GenericDefault);
76}
77}
78e.Handled = true;
79}
80#endregion
81}

不过:虽然没有仔细研究列的合并,我暂时还是找了个方法一定程度上替代了合并问题。因为我需要的是合并“删除”、“编辑”和“查看”这三列,本想就不显示表头好了,反正是操作列,不显示表头不注意也看不出什么来。巧合,我发现爱英思躺一个月以前发布了一篇博客专门介绍EasyCode生成器生成的修改、删除信息列表界面,用的是EasyCode 2.0版本,生成的页面第一感觉就是非常清新,真是眼前一亮,原来EasyCode代码生成器这么强大!!更诱人的是正有我想要的类似的合并列的功能,为什么说类似呢,因为样子是一样,但他是将1列(一个单元格)里面放置2个按钮,而不是常见的那种一列放一个按钮然后合并单元格的表头。下面就是爱英思躺团队用EasyCode 2.0.50727.4963版本生成的WinForm中DataGridView控件的自定义按钮列的外观,请看:

EasyCode 2.0生成的winform按钮列

关于如何设计WinForm中DataGridView控件的自定义按钮列,详细可参考该博客:

http://www.cnblogs.com/BudEasyCode/archive/2012/02/29/2373702.html

EasyCode的官方网站:http://www.budeasycode.com

我并没有用生成的所有代码,而是只拿出了其中的DataGridViewActionButtonColumn.cs类当控件来用的(该类是作者们继承DataGridViewColumn类,自己定制的一个控件而已!正如我们前面提到的DataGridViewColumn有六种派生类: DataGridViewButtonColumn,DataGridViewCheckBoxColumn…一样!) 我的用法,详见下一篇:DataGridView控件用法(三)。


来源:Blog of JJoy

已标记关键词 清除标记
vb.net操作DataGridView控件用法的集合,包括: 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一新追行非表示 4. DataGridView判断当前选中行是否为新追的行 5. DataGridView删除行可否设定 6. DataGridView不表示和删除 DataGridView控件用法合集() 7. DataGridView宽度高度设置为不能编辑 8. DataGridView行高幅自动调整 9. DataGridView指定行冻结 10. DataGridView顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字设定 16. DataGridView选择的部分拷贝至剪贴板 17.DataGridView粘贴 18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView控件用法合集(四) 19. DataGridView中的ContextMenuStrip属性 20. DataGridView指定滚动框位置 21. DataGridView手动追 22. DataGridView全体分界线样式设置 23. DataGridView根据单元格属性更改显示内容 24. DataGridView新追行的行高样式设置る 25. DataGridView新追行单元格默认值设置 DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获 DataGridView控件用法合集(六) 29. DataGridView行排序(点击表头自动排序的设置) 30. DataGridView自动行排序(新追值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定指定排序 DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格样式格式化 38. DataGridView指定单元格颜色设定 39. DataGridView单元格文字字体设置 40. DataGridView根据单元格值设定单元格样式 DataGridView控件用法合集(八) 41. DataGridView设置单元格背景颜色 42. DataGridView行样式描画 43. DataGridView显示行号 44. DataGridView焦点所在单元格焦点框不显示的设定 DataGridView控件用法合集(九) 45. DataGridView中显示选择框CheckBox 46. DataGridView中显示下拉框ComboBox 47. DataGridView单击打开下拉框 48. DataGridView中显示按钮 49. DataGridView中显示链接 50. DataGridView中显示图像 DataGridView控件用法合集(十) 51. DataGridView编辑中单元格控件取得 52. DataGridView输入自动完成 53. DataGridView单元格编辑时键盘KEY事件取得 54. DataGridView下拉框(ComboBox)单元格编辑时事件取得 55. DataGridView下拉框(ComboBox)单元格允许文字输入设定 DataGridView控件用法合集(十一) 56. DataGridView根据值不同在另一中显示相应图片 57. DataGridView中显示进度条(ProgressBar) 58. DataGridView中添MaskedTextBox DataGridView控件用法合集(十) 59. DataGridView中Enter键按下焦点移至旁边的单元格 60. DataGridView行集合化(Group)
相关推荐
本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。 本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。 大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。注意,某些问题会由于知识点的关联性重复出现在多个章节。这些问题、答案及其附带的示例代码都包含在本文档的附录部分。 一、DataGridView技术点的高级特性。 11 1 何为DataGridView 11 1.1 DataGridView和DataGrid 之间的区别 11 1.2 DataGridView的亮点 12 2 DataGridView的结构 13 2.1 结构元素(Architecture Elements) 13 2.2 单元格和组(Cells and Bands) 13 2.3 DataGridView的单元格 (DataGridViewCell) 13 2.3.1 DataGridViewCell的工作机制 14 2.3.2 常见问题 15 2.4 DataGridView(DataGridViewColumn) 16 2.5 DataGridView编辑控件(Editing Controls) 16 2.6 DataGridViewRow 17 2.6.1 常见问题 17 3 /单元格类型揭密(column/cell types) 17 3.1 DataGridViewTextBoxColumn 18 3.2 DataGridViewCheckBoxColumn 19 3.3 DataGridViewImageColumn 19 3.4 DataGridViewButtonColumn 19 3.5 DataGridViewComboBoxColumn 20 3.5.1 DataError事件和ComboBox 20 3.5.2 常见问题 20 3.6 DataGridViewLinkColumn 21 4 操作数据(Working with Data) 21 4.1 数据输入和验证的相关事件 21 4.1.1 数据验证相关事件的顺序 21 4.1.2 验证数据 22 4.1.3 在新行中的数据输入(Data Entry in the New Row) 22 4.1.3.1 显示新行 22 4.1.3.2 为生成的新行添默认值 22 4.1.3.4 在新行中输入数据 23 4.1.3.5 自定义新行的可视化效果 23 4.1.3.6 新行的排序 24 4.1.3.7 关于新行,还要注意: 24 4.1.3.8 Virtual Mode下的新行 24 4.2 关于Null值 24 4.2.1 NullValue属性 24 4.2.2 DataSourceNullValue属性 25 4.3 DataError事件 25 4.4 数据绑定模式(Databound modes) 26 4.4.1 非绑定模式(Unbound Mode) 26 4.4.2 绑定模式(Bound Mode) 26 4.4.2.1 有效的数据源 27 4.4.3 虚拟模式 27 4.4.4 混合模式 – 绑定与非绑定模式 27 4.4.5 常见问题 28 5 特性综览(Overview of features) 28 5.1 样式(Styling) 28 5.1.1 The DataGridViewCellStyle Class 29 5.1.2 Using DataGridViewCellStyle Objects 29 5.1.3 Style Inheritance 30 5.1.4 Setting Styles Dynamically 34 5.2 Custom painting 35 5.2.1 Paint Parts 35 5.3.1 在Windows窗体DataGridView控件调整大小选项 39 5.3.2 Resizing with the Mouse用鼠标调整大小 42 5.3.3 Automatic Sizing自动调整大小 43 5.3.4 Programmatic Resizing编程调整大小 45 5.3.5 Customizing Content-based Sizing Behavior自定义基于内容的调整大小行为 46 5.3.6 Content-based Sizing Options基于内容的调整大小选项 47 5.4 Selection modes选择模式 47 5.4.1 Programmatic Selection编程选择 49 5.5 滚动(Scrolling) 49 5.5.1 Scroll event Scroll事件 49 5.5.2 Scroll bars滚动条 50 5.5.3 Scrolling Properties滚动属性 50 5.6 Sorting排序 50 5.6.1 Programmatic Sorting编程排序 52 5.6.2 Custom Sorting自定义排序 53 5.6.3 Common questions and scenarios常见问题及案例 54 5.7 Border styles边框样式 55 5.7.1 Standard Border Styles标准边框样式 55 5.7.2 Advanced Border Styles高级边框风格 56 5.8 Enter-Edit modes输入,编辑模式 57 5.9 Clipboard copy modes剪贴板拷贝模式 58 5.10 Frozen columns/rows冻结的/行 60 5.11 Implementing Custom cells and editing controls/cells实现自定义和编辑控制单元格/单元格 60 5.11.1 IDataGridViewEditingControl 接口 61 5.11.2 IDataGridViewEditingCell 接口 61 5.12 Virtual mode虚拟模式 61 5.12.1 Bound Mode and Virtual Mode绑定模式和虚拟模式 62 5.12.2 Supplementing Bound Mode补充绑定模式 62 5.12.3 Common questions and scenarios常见问题及案例 62 5.12.4 Replacing Bound Mode更换绑定模式 63 5.12.5 Virtual-Mode Events虚拟模式事件 63 5.12.6 Best Practices in Virtual Mode在虚拟模式下的最佳实践 66 5.13 容量(Capacity) 66 6 最佳实践(Best Practices) 67 6.1 Using Cell Styles Efficiently使用高效单元格样式 67 6.2 Using Shortcut Menus Efficiently使用高效快捷菜单 68 6.3 Using Automatic Resizing Efficiently使用自动调整大小高效 69 6.4 Using the Selected Cells, Rows, and Columns Collections Efficiently高效使用选定的单元格,行和的集合 69 6.5 Using Shared Rows 使用共享行 70 6.6 Preventing Rows from Becoming Unshared 防止行成为非共享 72 附录 A – FAQ 75 1. 如何使指定的单元格不可编辑? 75 2. 如何让一个单元格不可用(disable)? 75 3. 如何避免用户将焦点设置到指定的单元格? 77 4. 如何使所有单元格总是显示控件(不论它是否处于编辑状态)? 77 5. Why does the cell text show up with “square” characters where they should be new lines(TODO,未能实现该效果)? 78 6. 如何在单元格内同时显示图标和文本? 78 7. 如何隐藏一? 80 8. 如何避免用户对排序? 81 9. 如何针对多个排序? 81 9.1 将数据绑定到DataGridView时 81 9.2 Unbound DataGridView 取消绑定 82 9.2.1 Custom Sorting Using the SortCompare Event 使用排序结束时间实现用户自定义排序 82 9.2.2 Custom Sorting Using the IComparer Interface使用IComparer接口实现自定义排序 84 10. 如何为编辑控件事件处理函数? 86 11. 应在何时移除编辑控件的事件处理函数? 87 12. 如何处理ComboBox控件的SelectIndexChanged事件? 87 13. 如何通过拖放调整行的顺序? 87 14. 如何调整最后的宽度使其占据网格的剩余客户区? 89 15. 如何让TextBox类型的单元格支持换行? 89 16. 如何使Image不显示任何图像(字段值为null时)? 90 17. 如何能够在ComboBox类型的单元格中输入数据? 90 18. How do I have a combo box column display a sub set of data based upon the value of a different combo box column(TODO)? 91 19. 如何在用户编辑控件的时候(而不是在验证时)就显示错误图标? 92 20. 如何同时显示绑定数据和非绑定数据? 94 21. How do I show data that comes from two tables(TODO)?如何显示来自两个数据源的数据? 96 22. 如何显示主从表? 97 23. 如何在同一DataGridView中显示主从表? 99 24. 如何避免用户对排序? 99 25. 如何在点击工具栏按钮的时候将数据提交到数据库? 99 26. 如何在用户删除记录时显示确认对话框? 99
注意:本3.0版控件过于老旧,该控件最新版本为4.7版,您可以到http://myyouping.download.csdn.net/免费下载,也是完全免费的,没有任何功能及使用时间限制,0积分下载。我将3.0版控件的下载分提为10分,是希望大家使用最新版的控件控件特色: 1、超强大的DataGridView打印功能,不光可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印)打印DataGridView表格,基本上能完全按DataGridView控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格对齐方式等打印出来,文字图像都可以打印,而且是完全根据表格当前的显示顺序进行打印的,如果您在使用时调整了的顺序,刷新打印后就会按调整后的显示顺序进行打印(这是网上很多DataGridView打印控件没有实现的),基本上做到了所见即所得的打印。 2、强大的文本打印输出功能,打印文本时,如果需要,控件会自动换行或换页打印输出。 3、支持同一文档多种版面格式打印(类似于Word中的节的功能):对同一份文档,不同的页面可以设置不同的格式(纸张大小、纸张方向、页边距),只需要在新增一页时在NewPage方法中指定要使用的页面格式即可,使用非常简单。 4、报表功能。本控件允许将当前打印预览的内容保存为报表文件,以后使用本控件重新打开该报表文件即可重现原来保存报表时的打印内容。 5、打印方案保存与读取功能。可以将当前打印参数保存为打印方案文件,或都从保存的打印方案文件中读取打印参数。 6、水印功能。根据需要,可以在页面中打印或不打印以半透明空心文字打印水印。 7、特殊文字效果功能。本版控件具有打印浮雕文字、阴影文字、空心文字、块文字的功能,效果非常不错。 8、页眉页脚中既可打印文字,也可打印图像,或者即打印图像又打印输出文字。 9、图像打印输出功能。 本控件包括两个打印组件:DGVprint打印组件与VB2008print打印组件。VB2008Print为通用打印控件(为可视化组件),可以混合打印一个或多个DataGridView表格、DataGrid表格与文字、图片等内容;而DGVprint是以VB2008Print为基础开发的(为非可视化组件),为专用的表格打印控件,可以很方便打印单个DatatGridview、DataGrid、DataTable表格的内容,并提供打印时的可视化设置界面,可设置表格打印方式(普通打印、分栏打印、跨页打印、工资条打印)、标题内容及字体、页眉页脚、选择要打印的表格顺序调整及格式设置、更改标题名称等,使用非常方便,功能非常强大。 与本控件的上一个版本2.1版相比,本版控件新增功能如下: VB2008Print打印组件新增功能: 1、多种特效文字打印输出功能,能打印的特效文字有 空心文字、浮雕文字、块文字、阴影文字等。 2、水印打印功能。可以在面页中以半透明空心文字的形式打印背景水印,只需要简单设置控件的WaterMarkText等几个以WaterMark开头的属性即可,程序会自动打印水印。 3、PrintDGV函数可直接使用DGVPrint组件保存的打印方案文件打印输出DataGridView表格, 4、在页眉页脚中不光可以打印文本,还可以打印图像,文本与图像可同时打印(即在图像上显示文本)。此外,页眉页脚文字可以换行打印了,页面的左边也右边距也可以打印内容了(调用相应的函数PrintLeft与PrintRight实现)。 5、改进DrawText函数输出文本的功能,现在,即便调用没有指定打印区域或打印宽度的DrawText函数输出文本,打印输出时控件也会智能换行和换页(原版本是需要指定打印宽度才能自动换行换页打印的) 6、改进DrawImage与DrawCellImage输出图像功能,如果图像比较小(小于打印区域大小),可以不进行放大打印。(但如果图像大于打印区域的话,还是采用整体缩小打印,而不是区域剪裁打印)。 7、增IsShowPrintStatusDialog属性,指示在发送到打印机打印时,是否显示一个指示正在打印的状态窗口(可以取消打印),为TRUE表示要显示,为False表示不显示。 8、改进页眉页脚事件,将原来的HeaderOut与FooterOut统一为HeaderFooterOut事件,在该事件中,您可以调用PrintFooter、PrintHeader、PrintLeft、PrintRight函数分别打印上下左右的页眉。(PrintLeft与PrintRight函数为新增的,用于在左边与右边页边距处输出内容) DGVPrint打印组件新增功能: 1、打印方案保存与读取功能。本版控件可以将您的可视化设置(包括格式设置等)全部保存为打印方案文件(文本文件,您可以用记事本打开并修改),并有读取方案文件的功能,不再需要每次都进行打印格式设置了,一劳永逸! 2、直接调用打印方案文件打印功能。您不光可以设计DGVPrint打印组件的属性来进行打印,还可以直接调用DGVPrint组件中保存的打印方案文件,直接利用保存的方案文件的参数进行打印预览输出。 3、新增在可视化打印参数设置界面的标题重命名功能,可能修改标题要打印的名字。 4、水印打印功能。如果水印文本设置为空,则不打印水印。 5、导出数据成Excel功能。暂未提供该功能的函数接口,只在打印参数设置窗口中增了一个数据导出的按钮,可以将当前要打印的DataGridView的内容导出成Excel文件。该功能以后会进一步完善。 6、在进行页眉页脚文本设置时,可以用 [页码] 代表要输出的当前页码,用 [总页数] 代表要输出总页数,控件在进行输出时,会自动将其转换为对应的页码与文档总页数。
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称密   Java非对称密源程序代码实例,本例中使用RSA密技术,定义密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序化保存私钥,通常应对私钥密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页