字符串的方法,继承,集合,桌面应用程序,简易登录页面,MDI窗体设计,图片翻页

 字符串的方法

 创建一个计时器记录程序运行的时间

            string str = null;
            //创建计时器
            Stopwatch sw = new Stopwatch();
            sw.Start();//开始计时
            for (int i = 0; i < 10000; i++)
            {
                str += i;
            }
            sw.Stop();//结束计时
            Console.WriteLine(sw.Elapsed);
            Console.ReadKey();

 00:00:00.0384006

            StringBuilder sb = new StringBuilder();
            string str = null;
            //创建计时器
            Stopwatch sw = new Stopwatch();
            sw.Start();//开始计时
            for (int i = 0; i < 10000; i++)
            {
                sb.Append(i);
            }
            sw.Stop();//结束计时
            Console.WriteLine(sw.Elapsed);
            Console.ReadKey();

00:00:00.0015112

 第一个string要在内存中开空间,StringBuilder不用开空间,程序运行速度会块很多

 使用Equals比较,可以自行选择比较标准(以下是比较字符串忽略大小写)

lesson1.Equals(lesson2,StringComparison.OrdinalIgnoreCase)

 split() 分割,返回数组

从日期字符串("2008-08-08")中分析出年月日

            string s = "2008-08-08";
            char[] chs = { '-' };
            string[] data = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("{0}年{1}月{2}日", data[0], data[1], data[2]);
            Console.ReadKey();

bool Contains(string value)   判断字符串中是否含有字串value,返回一个bool类型的值

            string str = "ff是猪";
            if (str.Contains("ff"))
            {
               str =  str.Replace("ff", "李昉");
            }
            Console.WriteLine(str);
            Console.ReadKey();

 substring() 截取

可以选择开始截取,截取长度

            string str = "李昉是猪";
            str = str.Substring(1,2);
            Console.WriteLine(str);

其他常用  

            bool StartsWith (string value)   //判断是否以value开始
            bool EndsWith (string value)   //判断是否以value结束
            int index = str.IndexOf('是');  //找‘是’第一次出现的位置

练习

            string str = "hello c sharp";
            char[] chs = { ' ' };
            string[] str1 = str.Split(chs, StringSplitOptions.RemoveEmptyEntries);
            //数组倒序
            for (int i = 0; i < str1.Length/2; i++)
            {
                string temp = str1[i];
                str1[i] = str1[str1.Length-1-i];
                str1[str1.Length -1-i] = temp;
            }
            //输出数组
            for (int i = 0; i < str1.Length; i++)
            {
                Console.WriteLine(str1[i]);
            }
            Console.ReadKey();

 继承

写下面三个类

    public class Student
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        private int _id;
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }
        public void CH()
        {
            Console.WriteLine("gasgy");
        }
        public void Learn()
        {
            Console.WriteLine("学生学习");
        }
    }
    public class Teacher
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        private double _salary;
        public double Salary
        {
            get { return _salary; }
            set { _salary = value; }
        }
        public void Teach()
        {
            Console.WriteLine("讲课");
        }
    }
    public class Driver
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        public void Drive()
        {
            Console.WriteLine("开车");
        }
    }

可以发现出现了大量的冗余。这时候就可以用继承,把这三个类中重复的成员拿出来单独封装成一个类,作为这几个类的父类

    public class Person
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
    }

    public class Student:Person
    {
        private int _id;
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }
        public void CH()
        {
            Console.WriteLine("gasgy");
        }
        public void Learn()
        {
            Console.WriteLine("学生学习");
        }
    }
    public class Teacher:Person
    {
        private double _salary;
        public double Salary
        {
            get { return _salary; }
            set { _salary = value; }
        }
        public void Teach()
        {
            Console.WriteLine("讲课");
        }
    }
    public class Driver:Person
    {
        public void Drive()
        {
            Console.WriteLine("开车");
        }
    }

我们又创建一个类Person,把公共的成员写在Person中,再继承可以简化程序。、

这个Person就是父类。私有字段(private)不能继承,只能继承公有字段(public)

集合

集合是很多个数据的集合,集合的好处:长度可以任意改变,类型随便

数组:长度不可变,类型单一

当我们把一个对象输出到控制台时,默认情况下打印的是命名空间

            ArrayList list = new ArrayList();
            list.Add(true);
            list.Add(1);
            list.Add("张三");
            list.AddRange(new int[] { 1, 2, 3, 45, 5 });   //添加集合用AddRange
            list.Clear();  //清空所有元素
            list.Remove(true);  //删除哪个元素
            list.RemoveAt(0);    //根据下标删除元素
            list.RemoveRange(0, 3);  //根据下标删除一定范围中的元素
            list.Sort();     //升序排列
            list.Reverse();    //反转
            list.Insert(1, "插入的");    //在指定位置插入元素
            list.InsertRange(0, new string[] { "张三", "李四" });   //在指定位置插入集合
            bool b = list.Contains(1);   //判断是否包含某个元素
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

集合中的元素都是object型,在使用时,我们需要转换

            ArrayList list = new ArrayList();
            list.AddRange(new int[] { 1, 23, 5, 6, 7 });
            int sum = 0;
            int max = (int)list[0];
            for (int i = 0; i < list.Count; i++)
            {
                sum = sum + (int)list[i]; //将object类型转换为int类型
                if ((int)list[i] > max)
                {
                    max = (int)list[i];
                }
            }
            Console.WriteLine(max);
            Console.WriteLine(sum);

随机产生10个不重复数(1—10)

            ArrayList list = new ArrayList();
            Random r = new Random();
            for (int i = 0; i < 10; i++)
            {
                int rNumber = r.Next(0, 10);
                if (!list.Contains(rNumber))
                {
                    list.Add(rNumber);
                }
                else 
                {
                    //一旦产生重复数
                    i--;
                }  
            }
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

文件操作

            //创建文件
            File.Create(@"C:\Users\xiaomi\Desktop\new.txt");
            //删除文件
            File.Delete(@"C:\Users\xiaomi\Desktop\new.txt");
            //复制一个文件
            File.Copy(@"C:\Users\xiaomi\Desktop\new.txt", @"C:\Users\xiaomi\Desktop\new1.txt");

桌面应用程序

每次拖动控件的过程就是创建控件对象的过程

this.Close();   //关闭当前窗口

//调用窗口2
Form2 form2 = new Form2();
form2.Show();
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("我去你妈的");
            this.Close();
        }

        private void button2_MouseEnter(object sender, EventArgs e)
        {
            //活动的宽度就是窗体的宽度减去按钮的宽度
            int x = this.ClientSize.Width - button2.Width;
            int y = this.ClientSize.Height - button2.Height;
            Random r = new Random();
            //随机给button一个新的坐标
            button2.Location = new Point(r.Next(0, x+1), r.Next(0, y+1));

        }

指定在21:30播放音乐(简易闹钟)

            lblTme.Text = DateTime.Now.ToString();
            if (DateTime.Now.Hour ==21 && DateTime.Now.Minute ==30)
            {
                SoundPlayer sp = new SoundPlayer();
                sp.SoundLocation = @"";//放置音乐路径
                sp.Play();
            }

简易登录页面

 

        private void button1_Click(object sender, EventArgs e)
        {
            if (ButtonStudent.Checked || ButtonTeacher.Checked)
            {
                string name = textName.Text.Trim();
                string pwb = textPwb.Text.Trim();
                if (ButtonStudent.Checked)  //表示被选中
                {
                    if (name == "Student" && pwb == "Student")
                    {
                        MessageBox.Show("登录成功");
                    }
                    else
                    {
                        MessageBox.Show("登录失败");
                        textPwb.Clear();
                        textName.Clear();
                        textName.Focus();
                    }
                }
                else
                {
                    if (name == "Teacher" && pwb == "Teacher")
                    {
                        MessageBox.Show("登录成功");
                    }
                    else
                    {
                        MessageBox.Show("登陆失败");
                        textPwb.Clear();
                        textName.Clear();
                        textName.Focus();
                    }
                }
            }
            else
            {
                MessageBox.Show("请选择登陆方式");
            }
        }

MDI窗体设计

子窗体都在父窗体中,并且无论怎么拖拽都不会出父窗体

设置主窗体

        private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.MdiParent = this;
            form2.Show();
            Form3 form3 = new Form3();
            form3.MdiParent = this;
            form3.Show();
        }

        private void 横向排列ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);  //横向排列
        }

        private void 纵向排列ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);   //纵向排列
        }

效果如图

 实现图片的翻页效果

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = Image.FromFile(@"C:\Users\xiaomi\Desktop\tupian (2)\4.jpg");
            //获得指定文件夹所有文件的路径
        }
        int i = 0;
        string[] Path = Directory.GetFiles(@"C:\Users\xiaomi\Desktop\tupian (2)");
        /// <summary>
        /// 点击更换下一张
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            i++;
            if (i == Path.Length)
            {
                i = 0;
            }
            pictureBox1.Image = Image.FromFile(Path[i]);
        }
        /// <summary>
        /// 点击更换上一张
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            i--;
            if (i < 0)
            {
                i = Path.Length - 1;
            }
            pictureBox1.Image = Image.FromFile(Path[i]);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值