黑马程序员_WinForm基础-记事本相关功能的编写

来源:互联网 发布:下厨房可以在淘宝 编辑:程序博客网 时间:2024/06/05 00:28

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------


记事本跟其他程序一样具有新建、打开、保存等功能,还可以对文本内容进行编辑(复制粘贴剪切等),还可以设置字体等,我们可以结合之前所学的WinForm知识,设计一个记事本,也具有相关的功能。下面是一些知识点,实现记事本的相关功能。


怎样使程序窗体大小发生变化时,控件对应的位置也保持不变?两种方法

1)设置对应控件的Anchor属性,可以定义到某些边的距离不变

2)设置对应控件的Dock属性,可以定义停靠在哪条边上或者填充整个窗体


读写文件

读一个文本文件

1) 声明一个文件流对象 

FileStream类,是操作文件流的一个类,也是在IO命名空间下

FileMode表示这个文件流的功能,是个枚举。

FileAccess:与FileMode配对使用,只取其中一个也行,FileMode是打开,其就是读取,FileMode是保存,其就是写入

FileShare:表示这个文件流在当前打开时,其他进程是否可以对其进行访问

2) 创建读写器

StreamReader类

Encoding:要使用的字符编码

3) 读取操作

ReadLine方法:读取一行

ReadToEnd方法:读取到最后

EndOfStream属性:指示是否读到文件末尾

4) 关闭读取器

5) 关闭文件流对象,释放对所操作文件的锁定

示例代码:

                //第一步:声明一个文件流

                FileStream fs =newFileStream(ofd.FileName,FileMode.Open, FileAccess.Read,FileShare.None); //第一个参数为文件名及路径

                //第二步:创建读写器

                StreamReader sr =newStreamReader(fs);

                //第三步

                txtText.Text =sr.ReadToEnd();//读取到最后,并赋给TextBox 

                sr.Close(); //关闭读取器

                fs.Close(); //关闭文件流


写一个文本文件

1) 声明一个文件流对象

2) 创建写入器

StreamWriter类

3) 写入操作

Write方法:写入全部

WriteLine方法:写入一行

4) 关闭写入器

5) 关闭文件流对象

示例代码:

                FileStreamfs =new FileStream(sfd.FileName,FileMode.Create); //声明一个文件流对象

                StreamWriter sr =newStreamWriter(fs,Encoding.Default); //创建写入器

               sr.Write(txtText.Text); //写入操作

                sr.Close();//关闭写入器

                fs.Close();//关闭文件流对象


复制粘贴剪切

Copy()复制  Cut()剪切  Paste()粘贴

结合之前所学的对文件的相关操作(IO操作),这几个功能很容易就能做出来,就不再详细说明。


选择字体、颜色

FontDialog:选择字体对话框

ColorDialog:选择颜色对话框

选择字体代码示例:

            FontDialogft =new FontDialog();//实例化一个FontDialog

            ft.Font = txtText.Font;   //把当前文本框的字体赋给ft,实现下次选择字体时,能看到上一次选择的字体

            if (ft.ShowDialog()==DialogResult.OK)

            {//选好了字体

                txtText.Font = ft.Font;//把文本框的字体设置成选中的字体

            }

选择字体颜色、背景颜色与上面代码类似,分别用的是ForeColor、BackColor属性。


配置文件

初始化程序时用到,可以按指定的配置进行初始化程序,可以实现用户打开程序时,初始化成上一次用户所设置的大小位置颜色等。


怎样保存配置文件?

创建一个写入器,写入一个文件,把文件放到指定的位置,下次打开时,从指定的位置找到配置文件,读取里面的内容,进行初始化程序,跟文件的写入读取类似,可以不用实例化一个文件流。

配置文件的文件名和后缀可以随意指定,比如:.app .cal .dll等

怎样保存颜色?

我们可以取得颜色的RGB三个数,保存的时候存这三个数,下次要用的时候读取出来,用Color的FromArgb方法设置颜色的RGB值。


示例代码

关闭程序时,获取相关配置,保存成配置文件:

            intx = this.Location.X; //获取窗体的X坐标

            inty = this.Location.Y; //获取窗体的Y坐标

            intw = this.Size.Width; //获取窗体的宽度

            inth = this.Size.Height; //获取窗体的高度

            //创建一个写入器,指定配置文件  app.dll  及存储位置

            StreamWritersw = new StreamWriter(Application.StartupPath +"\\app.dll",false);

            //分别写入窗体的X Y坐标、宽度高度

           sw.WriteLine(x.ToString());

           sw.WriteLine(y.ToString());

           sw.WriteLine(w.ToString());

           sw.WriteLine(h.ToString());

            //获取文字颜色的RGB值,并分别写入

           sw.WriteLine(txtText.ForeColor.R);

           sw.WriteLine(txtText.ForeColor.G);

           sw.WriteLine(txtText.ForeColor.B);

            sw.Close();//关闭写入器,释放对文件的锁定

启动程序时,读取配置文件,并初始化程序:

            stringappPath = Application.StartupPath + "\\app.dll";//设定配置文件的路径,存在appPath中

            if(File.Exists(appPath)) //确定配置文件是否存在

            {//配置文件存在

                //创建一个读取器

                StreamReader sr =newStreamReader(appPath);

                //分别读取X Y坐标、宽度和高度

                int x = Convert.ToInt32(sr.ReadLine());

                int y = Convert.ToInt32(sr.ReadLine());

                int w = Convert.ToInt32(sr.ReadLine());

                int h = Convert.ToInt32(sr.ReadLine());

                //读取颜色的RGB值

                int r = Convert.ToInt32(sr.ReadLine());

                int g = Convert.ToInt32(sr.ReadLine());

                int b = Convert.ToInt32(sr.ReadLine());

 

                this.Location = new Point(x, y); //初始化窗体的位置

                this.Size = new Size(w, h); //初始化窗体的宽度高度

                txtText.ForeColor = Color.FromArgb(r, g, b);//设置颜色的RGB值

                sr.Close();//关闭读取器,释放锁定的文件

            }


---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击