首页 > 代码库 > 布局容器、打印控件

布局容器、打印控件

一、布局:单击任意控件,在属性的布局里面有两个重要属性

(1)Anchor:锁定位置,上下左右可以选择锁定位置
(2)Dock:填充位置 ,一般Dock是与容器控件配合使用

-----------------------------------------------------------------------------------------------------

二、容器控件:
(1)Panel:就是一个区域,类似于DIV,可以独立布局,还可以让其它控件及容器在它的内部再次布局

(2)FlowLayoutPanel:流式布局容器,内容会默认从左向右排列,如果宽度不够了,那么自动换行

(3)GroupBox:依然是容器,拥有Panel全部属性,比Panel多了个标题和边框样式

(4)TabControl:选项卡容器

(5)SplitContainer:二分区容器,可以进行嵌套使用

(6)TableLayoutPanel:表格容器

       每个单元格只能放一个控件,要想多放几个,可以用Panel,在单元格内放上一个Panel,然后在Panel里面可以放多个控件,可以设置点击事件

-------------------------------------------------------------------------------------------------------------------------------------------
三、打印控件:
(1)PrintDocument:要打印的对象,非常重要
        程序不知道你要打印什么东西,它只会去找这个要打印的对象
        你所要做的事情,就是将要打印的内容绘制到这个打印对象上去

(2)PageSetupDialog:打印设置对话框

(3)PrintPreviewControl:打印预览控件,但是里面的字体看不清所以不太常用

(4)PrintPreviewDialog:打印预览对话框,可以调节大小,常用

(5)PrintDialog:打印对话框

//DialogResult是一个可被实例化的枚举类,用来接收用户在对话框中的操作

DialogResult dr = printDialog1.ShowDialog();

if (dr == DialogResult.OK)//如果用户点击的是确定按钮,那么执行打印
{
printDocument1.Print();
}

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing;namespace 容器布局_打印控件{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void 打印设置ToolStripMenuItem_Click(object sender, EventArgs e)        {            //让pageSetupDialog1的属性Document指向printDocument1            pageSetupDialog1.Document = printDocument1;            //显示一个对话框,允许用户更改与页面相关的打印设置,并且设置为Dialog样式,当前窗体不关闭其他窗体不能进行操作            pageSetupDialog1.ShowDialog();        }        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)        {            Font f=new Font("黑体",18);//设置Font,字体,大小            SolidBrush b = new SolidBrush(Color.Black);//设置刷子,用什么样的刷子来绘制内容,SolidBrush实线画刷            //printDocument要打印的对象,相当于一个画布,把要打印的东西画在画布上,对画布进行设置操作,打印画布的内容            //绘制画布,用到命名空间"System.Drawing"在上面引用            e.Graphics.DrawString(textBox1.Text, f, b, 10, 10);//绘制字符串(要绘制的字符串,字体,画刷,坐标)        }        private void 打印预览VToolStripMenuItem_Click(object sender, EventArgs e)        {            printPreviewControl1.Document = printDocument1;            printPreviewDialog1.Document = printDocument1;            printPreviewDialog1.ShowDialog();        }private void 打印PToolStripMenuItem_Click(object sender, EventArgs e)        {            printDialog1.Document = printDocument1;            DialogResult dr = printDialog1.ShowDialog();//DialogResult枚举类            //判断一下            if (dr == DialogResult.OK)//如果用户点击的是OK,确认打印            {                printDocument1.Print();            }        }    }}

--------------------------------------------------------------------------------------------------------------------------------------------------------------

四、对话框控件:

(1)colorDialog - 颜色选择对话框

     private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e)        {            //设置变量接收 colorDialog1.ShowDialog()            DialogResult dr = colorDialog1.ShowDialog();            //判断            if (dr == DialogResult.OK)//如果点击确定            {                //改变字体颜色,让textBox1的前景色(ForeColor)等于传回来的颜色colorDialog1.Color                textBox1.ForeColor = colorDialog1.Color;                //也可以任意改变其他的颜色,例如改变底部菜单Lable的背景色                toolStripStatusLabel1.BackColor = colorDialog1.Color;                        }        }

(2)folderBrowserDialog - 文件路径选择对话框

       绝对路径:带盘符的 G:\0720\...复制到资源管理器里面可以直接找到

       相对路径:根据你当前程序的目录下,找到某个文件夹 /css/css1.css,复制到资源管理器里面找不到,在Web端用的多

private void 选择文件夹ToolStripMenuItem_Click(object sender, EventArgs e)        {            folderBrowserDialog1.ShowDialog();            //显示出获取或设置用户选择的文件路径            toolStripStatusLabel1.Text = folderBrowserDialog1.SelectedPath;        }

(3)fontDialog - 字体选择对话框

private void 字体设置ToolStripMenuItem_Click(object sender, EventArgs e)        {            DialogResult dr = fontDialog1.ShowDialog();            if (dr == DialogResult.OK)            {                textBox1.Font = fontDialog1.Font;            }        }

注:a、若果要在字体设置里面直接更改字体颜色,那么就在fontDialog的属性里面把ShowColor改为True

     b、ShowApply 是否显示“应用”按钮

private void 字体设置ToolStripMenuItem_Click(object sender, EventArgs e)        {            DialogResult dr = fontDialog1.ShowDialog();            if (dr == DialogResult.OK)            {                fontDialog1.ShowDialog();//显示一下看看是什么样式                textBox1.Font = fontDialog1.Font;//更改字体                //如果要直接在字体设置里面改变字体颜色,那么就要在窗体中改变ShowColor属性,代码中增加以下代码                textBox1.ForeColor = fontDialog1.Color;//更改字体颜色            }        }

(4)openFileDialog - 打开文件对话框

       openFileDialog1.Filter = "文本文件.txt|*.txt|视频文件|*.avi|所有文件|*.*";

注:在打开文件要显示文件里面的文本内容时需要用到“流”

流:IO

StreamReader - 读取流 sr.ReadToEnd();

StreamWriter - 输出流 sw.Write(要输出的内容);

        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)        {            DialogResult dr = openFileDialog1.ShowDialog();            if (dr == DialogResult.OK)            {                //show(显示)之前设置显示文件的格式,这样想查看什么格式的文件就会显示什么样的文件                //竖杠前面是给用户看的,竖杠后面是给程序看的,                openFileDialog1.Filter = "文本文件.txt|*.txt|视频文件|*.avi|所有文件|*.*";                //让选择的文件路径在toolStripStatusLabel1上显示                toolStripStatusLabel1.Text = openFileDialog1.FileName;                //在打开文件要显示文件里面的文本内容时需要用到“流”,                //没有命名空间需要解析  using System.IO;                StreamReader sr = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.Default);                textBox1.Text = sr.ReadToEnd();//从当前读到结尾,读取出来的数据是乱码,需要在上一句给增加一个参数 System.Text.Encoding.Default,规定一个默认编码                sr.Close();//数据读取玩之后必须关闭流,因为通道只有一个,不关闭的话下次打不开            }        }

(5)saveFileDialog - 保存文件对话框

1、问题1:打开保存,文件名处没有默认的文件名

     办法:在show之前给saveFileDialog1.FileName赋值,这样保存时,文件名处就会显示默认文件名

2、问题2:如果我已经保存过了,那么在次保存不需要弹出对话框,而是直接执行保存就可以。

     办法:定义一个字符串类型的路径“string path = "";”判断保存路径是否为空,空直接保存,不是空保存至之前的文件路径

        //已经保存过的文件,再次保存不需要弹出对话框,而是直接执行保存就可以。        string path = "";//path路径        private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)        {            //先判断path是否是空的            if (path == "")//若果路径为空说明之前没有保存过那么就直接保存            {                //在show之前给saveFileDialog1.FileName赋值,这样保存时,文件名处就会显示默认文件名                saveFileDialog1.FileName = "新建文件夹.txt";                DialogResult dr = saveFileDialog1.ShowDialog();                if (dr == DialogResult.OK)                {                    toolStripStatusLabel1.Text = saveFileDialog1.FileName;                    //把输入的内容导出保存,这里不需要给他规定编码                    StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);                    sw.Write(textBox1.Text);                    sw.Close();//数据读取玩之后必须关闭流,因为通道只有一个,不关闭的话下次打不开                    path = saveFileDialog1.FileName;//记录一下保存的文件名                }            }            else//如果path不为空说明之前保存过那么把保存到的文件名改成path即可            {                StreamWriter sw = new StreamWriter(path);                sw.Write(textBox1.Text);                sw.Close();//数据读取玩之后必须关闭流,因为通道只有一个,不关闭的话下次打不开            }        }

 



 

布局容器、打印控件