【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

一、打印控件

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

1.PrintDocument  打印对象(将要打印的内容放到该对象里,从该对象里取内容打印)

设置PrintDocument 事件中的 PrintPage 属性[对于要打印的每一页发生一次]

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

2.PageSetupDialog  打印设置对话框

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

3.PrintPreviewDialog  打印预览对话框

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

ps:PrintPreviewControl   打印预览控件

这个是在窗体中可以直接直接展示的打印预览状态的控件,只能展示,不能设置.

右侧的文档不包含任何页就是PrintPreviewControl控件,他在窗体中需要有位置才能展示

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

4.PrintDialog   打印对话框

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

打印界面中打印页面范围、打印到文件等从PrintDialog的属性中进行设置

二、事件对象和事件数据

例子:计算器按键显示事件委托。

如果触发这个事件的控件是一个按钮类型,

实例化一个按钮b=触发这个事件的控件转化为按钮。

【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

sender 触发该事件的控件;e 事件数据。

三、MDI窗体容器

效果和容器TabelControl差不多,区别就是一个是用来存放控件,一个来存放Form窗体

选中主窗体,在窗口样式属性中,将IsMdiContainer属性改为true,把这个窗体变成了MDI窗体

常用MDI窗体容器制作

在里面放一个顶部菜单MenuStrip

在窗体容器中放进一个Panel占满全部

将要打开的子页面做成无边框,这样就不会存在关闭按钮了

1  List<Form> FormList = new List<Form>();
 2 
 3         private void 销售模块ToolStripMenuItem_Click(object sender, EventArgs e)
 4         {
 5             bool has = false;
 6             Form2 f2 = new Form2();
 7 
 8             //遍历FormList这个集合
 9             foreach (Form f in FormList)
10             {
11                 //如果f是Form2类
12                 if (f is Form2)
13                 {
14                     has = true;
15                     //f2就是Form2
16                     f2 = f as Form2;
17                 }
18             }
19             //如果这个集合中不存在Form2类
20             if (has == false)
21             {
22                 //f2这个窗口属于哪个容器=this
23                 f2.MdiParent = this;
24                 //f2窗口打开初始大小为最大化
25                 f2.WindowState = FormWindowState.Maximized;
26                 //f2窗口的父级是Panel1
27                 f2.Parent = panel1;
28                 //打开f2这个窗口
29                 f2.Show();
30                 //并将f2添加到集合中去
31                 FormList.Add(f2);
32             }
33             //如果已经打开过f2窗口
34             else
35             {
36                 //遍历集合中所有窗体
37                 foreach (Form f in FormList)
38                 {
39                     //全部隐藏
40                     f.Hide();
41                 }
42                 //将f2显示出来
43                 f2.Show();
44             }
45         }

ps:用MDI制作安装程序步骤的时候,先让MDI打开自身的一个Panel1,上面放一个Button,点击按钮后,Button隐藏,然后在打开MDI内的其它窗体,避免闪屏情况出现.