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

时间:2022-09-06 13:43:37

一、打印控件

第一步先把打印对象搞出来。

- printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印)

设置他的PrintPage事件(对于要打印的每一页触发一次)

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

- pageSetupDialog 打印设置对话框

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

- printPreviewDialog 打印预览对话框

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

- printPreviewControl  打印预览控件。

只需要把预览对象给他设置上就好

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

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

- printDialog  打印对话框

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

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

打印界面里面是否禁用页面范围、打印到文件等从PrintDialog的属性中进行设置。

 二、事件对象和事件数据

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

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

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

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

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

 三、MDI窗体容器

在主窗体的属性中将IsMdiContainer属性改为true,就是窗体容器了。

在里面放一个顶部菜单MenuStrip

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

将要打开的子页面做成无边框。

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

还需要设置成打开唯一窗口,如果打开了就把所有的都隐藏,把要打开的那个显示出来。

  List<Form> FormList = new List<Form>();

         private void 销售模块ToolStripMenuItem_Click(object sender, EventArgs e)
{
bool has = false;
Form2 f2 = new Form2(); //遍历FormList这个集合
foreach (Form f in FormList)
{
//如果f是Form2类
if (f is Form2)
{
has = true;
//f2就是Form2
f2 = f as Form2;
}
}
//如果这个集合中不存在Form2类
if (has == false)
{
//f2这个窗口属于哪个容器=this
f2.MdiParent = this;
//f2窗口打开初始大小为最大化
f2.WindowState = FormWindowState.Maximized;
//f2窗口的父级是Panel1
f2.Parent = panel1;
//打开f2这个窗口
f2.Show();
//并将f2添加到集合中去
FormList.Add(f2);
}
//如果已经打开过f2窗口
else
{
//遍历集合中所有窗体
foreach (Form f in FormList)
{
//全部隐藏
f.Hide();
}
//将f2显示出来
f2.Show();
}
}