• 布局容器、打印控件


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

    (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:720...复制到资源管理器里面可以直接找到

           相对路径:根据你当前程序的目录下,找到某个文件夹 /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();//数据读取玩之后必须关闭流,因为通道只有一个,不关闭的话下次打不开
                }
    
            }



  • 相关阅读:
    MyBatisPlus简单查询
    vue Composition API官网
    操作mysql脚本
    elbutton 自定义背景图片
    k8s 应用yaml
    分页查询
    nodejs 工具库
    eltablecolumn的转义,eltablecolumn根据返回的数据判断
    谷歌地图在线
    YOLOX在OpenVINO、ONNXRUNTIME、TensorRT上面推理部署与速度比较
  • 原文地址:https://www.cnblogs.com/juyangchao12/p/5899434.html
Copyright © 2020-2023  润新知