zoukankan      html  css  js  c++  java
  • Windows Form -----内容(12)流与事件

    文件及文件夹操作:
    一、流:
    文件流:FileStream。用来操作文件。
    命名空间:System.IO;
    使用流的步骤:——最原生的流的操作。——通用性最强的。
    1.创建流。
    FileStream fs = new FileStream("文件路径",FileMode枚举);
        FileMode.Appen - 如果存在,就打开追加;如果不存就新建
        FileMode.Create - 如果存在,覆盖。如果不存在就新建。
        FileMode.OpenOrCreate。如果存在就打开,不存在就新建。
    2.读取或写入流。

        (1)..写入流:
         第一步:需要把字符串,变成二进制数组:
         byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);
         第二步:写入流
             fs.Write(aaa, 0, aaa.Length);    
            //第一个参数:要被写进去的二进制数据;
            //第二个参数:开始的位置,一般都是0
            //第三个参数:要往流里面写入的长度。一般都是数组的length

        (2).读取流:
        第一步:准备一个二进制的数组,用来接收二进制数据。
        byte[] aaa = new byte[fs.Length];  //数组的长度,一般使用流的长度来定义,因为这个数组就是用来存储流中的数据的。
        第二步:使用进行读取,把读出来的内容放在上面的二进制数组中。
        fs.Read(aaa,0,aaa.Length);
            //第一个参数:被读出来的二进制数据;
            //第二个参数:开始的位置,一般都是0。从哪开始读
            //第三个参数:要读取的长度。一般都是数组的length。即流的长度

        第三步:把读出的二进制数组变成字符串。
        string s = System.Text.Encoding.Default.GetString(aaa);

    3.关闭流。
        fs.Close();

    文件操作时,防止内存泄漏的方法:
    法一:try...finally
    法二:using(){ }
    案例:
            private void btnSave_Click(object sender, EventArgs e)
            {
                FileStream fs = null;
                try
                {
                    //创建流
                    fs  = new FileStream("aaa.txt", FileMode.Create);

                    //把文本框的字符串,变成1010101二进制byte[]
                    byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);
                    //写入流
                    fs.Write(aaa, 0, aaa.Length);
                }
                finally
                {
                    //关闭流
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                //创建流
                using (FileStream fs = new FileStream("aaa.txt", FileMode.Open))
                {
                    //准备一个空的二进制数组,用来接收读取出来的内容
                    byte[] aaa = new byte[fs.Length];
                    //读取流
                    fs.Read(aaa, 0, aaa.Length);
                    //把二进制转为字符串
                    txt.Text = System.Text.Encoding.Default.GetString(aaa);

                    //关闭流
                    fs.Close();
                }
            }

    对于文本(字符串)形式的文件流可以使用StreamWriter和StreamReader来简化操作。
    1.创建流
    FileStream fs = new FileStream("bbb.txt",FileMode.Create);
    //FileStream fs = new FileStream("bbb.txt",FileMode.Open);
    2.套读取器或写入器。
    StreamWriter writer = new StreamWriter(fs);
    //StreamReader reader = new StreamReader(fs);
    3.使用读取器或写入器对文件流进行操作。
    writer.Writer("字符串");
    //string s = reader.ReadToEnd();
    4.关闭读取器和文件流。
    writer.Close();
    //reader.Close();
    fs.Close();

    对于文本(字符串)形式的文件还可以再简化。——不用写流的创建,关闭,直接使用流的读取器和写入器
            private void button4_Click(object sender, EventArgs e)
            {
                StreamWriter writer = new StreamWriter("ccc.txt",true, Encoding.Default);
                writer.Write(txt.Text);
                writer.Close();
            }

            private void button5_Click(object sender, EventArgs e)
            {
                StreamReader reader = new StreamReader("ccc.txt",Encoding.Default);
                txt.Text =  reader.ReadToEnd();
                reader.Close();
            }

    控件的动态生成与操作:
    事件三要素:事件源,事件数据,事件处理程序
            //sender-事件源,EventArgs-事件数据,函数体就是处理程序
            private void button1_Click(object sender, EventArgs e)
            {
                Button btn = sender as Button; //把事件源具像化。
                MessageBox.Show(btn.Text); //显示事件源的文本。
            }

    加载数据库中的数据,如果内容非常多,就显示出滚动条。类似于QQ好友列表的效果。
    1.先放一个Panel在窗体中Dock布局一下。
    2.在这个Panel里面放一个FlowLayoutPanel,设置它从上到下流式布局。
    3.外面的Panel需设置AutoScroll=true .超出范围就显示滚动条。**
    4.里面的FlowLayoutPanel,设置它Dock=Top,AutoSize=true

  • 相关阅读:
    win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
    kubernetes环境下私有仓库搭建
    Build a Restful Service
    大数据的开始:安装hadoop
    调试Ajax调用的利器firebug
    Oracle Process Cloud流程云实践
    Kubernetes环境下如何运行Coherence缓存集群
    Kubernetes的负载均衡问题(Nginx Ingress)
    Kubernetes master节点的高可用配置
    Kubernetes环境下调整WebLogic JVM基本参数
  • 原文地址:https://www.cnblogs.com/likaixuan/p/4540345.html
Copyright © 2011-2022 走看看