第九周学习内容

WinForm:Windows Form,.Net中用来开发Windows窗口程序的技术,无论是控制台程序,还是ASP.Net都是调用.Net框架,因此所有知识点都是一样的。
新建一个Windows项目:Windows→Windows窗体应用程序
控件(Control):窗口上很多元素都是相似的,因此将这些元素抽象为一些类,这些类就叫做控件。
识别PowerPoint中的控件,按钮(Button)、文本框(TextBox)、标签(Label)、单选按钮(RadioButton)、复选框(CheckBox)。
添加(工具箱)、删除、移动、缩放控件
属性修改控件外观
控件的名字是Name
Text修改按钮名称
在事件里设置促发条件

事件:鼠标移动到按钮上的时候显示“大爷您来了”,离开按钮的时候显示“大爷常来呀”。
通过设计器设置属性、事件的东西存在哪里?看Designer.cs。
删除事件响应的方法:先到事件页签中删除属性,再删除函数。
拖放控件,输入姓名,点击按钮,窗口标题显示问好。设置窗口对象的属性就可以改变窗口的外观。点击按钮调用TextBox的Hide方法,调用控件的方法就可以使得控件发生动作。
当用户点击按钮的时候Button1_click方法被调用,这个方法不是程序员调用的,而是程序员把方法写好,并且说明“当用户点击按钮的时候执行Button1_click方法中的代码”,这一点和控制台程序不同。
方法放在那里,发生事件的时候框架来调用这个方法。button5_Click不是程序员调用的,而是框架调用的。回调(CallBack)。
控件、属性、事件、事件处理方法、控件的名字(控件的实例;对象名)
例:

    //只要把事件响应的代码放到这里,然后指定“当用户点击这个按钮的时候执行这个方法”
    //不用用户来调用,由。net操作系统来调用
    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("我是另外一个按钮");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show("点了一下");
    }
    private void button4_MouseEnter(object sender, EventArgs e)
    {
        button4.Text = "大爷您来啦";
    }
    private void button4_MouseLeave(object sender, EventArgs e)
    {
        button4.Text ="大爷您慢走";
    }

例:简单的加法计算器,用户在文本框1、2中输入两个数,点击按钮,在文本框3中显示两个数的和。如果1或者2为错误的数据格式,则弹出对话框提示错误。int.TryParse、MessageBox.Show。

private void buttoncalc1_Click(object sender, EventArgs e)
    {
        int i1;
       // i1 = Convert.ToInt32(textBoxNum1 );//别写成这样
        if (!int.TryParse(textBoxNum1.Text, out i1))
        {
            MessageBox.Show("请输入一个数字");
            textBoxNum1.Focus();//让控件获得焦点
            return;//别忘了return
        }
        int i2;
        if (!int.TryParse(textBoxNum2.Text, out i2))
        {
            MessageBox.Show("请输入一个数字");
            textBoxNum2.Focus();
            return;
        }
        int i3 = i1 + i2;
        textBoxresult3.Text = Convert.ToString(i3);
    }

例:练习2:页面上有一张图片(PictureBox,在Image属性中加载图片),默认是隐藏的(Visible=False),用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁则显示图片(Visible=True),否则提示年龄太小。取当前年份:DateTime.Now.Year。

  private void buttonValid_Click(object sender, EventArgs e)
    {
        string id = textBoxId.Text.Trim();
        if (id.Length != 18)//身份证号码长度为18
        {
            MessageBox.Show("身份证长度不合法");
            return;
        }
        //年份是从6开始长度为4.
        string strYear = id.Substring (6,4);
        int year = Convert.ToInt32(strYear );
        //if (DateTime .Now.Year -year >18 )
        //{
        //    pictureBox1.Visible = true;
        //}
        //else 
        //{
        //    pictureBox1.Visible = false ;
        //}
        pictureBox1.Visible = (DateTime.Now.Year - year > 18);
    }

练习3:页面上有一个文本框,文本框左侧和右侧各有一个按钮,点击左侧按钮文本框中的文字向左循环滚动一次,点击右侧按钮文本框中的文字向右循环滚动一次。

    private void btnLeft_Click(object sender, EventArgs e)
    {
        string text = textBox.Text;
        char firstChar = text[0];
        string rightPart = text.Substring(1);
        textBox.Text = rightPart + firstChar;
    }
    private void btnRight_Click(object sender, EventArgs e)
    {
        string text = textBox.Text;
        char lastChar = text[text .Length-1 ];
        string leftPart = text.Substring(0, text.Length-1);
        textBox.Text = lastChar + leftPart ;
    }

计时器Timer

Timer。每隔一段时间触发一个事件。不可视控件。
nterval:每隔多长时间干什么事
Enable:是否启用计时器
事件里Tick:当事件到来时,执行。。
计量单位:ms(毫秒)。 1秒=1000毫秒
例:小时钟。取当前时间DateTime.Now.ToString();

  private void timer1_Tick(object sender, EventArgs e)
    {
        //MessageBox.Show("到了");
        //.net中日期是DaTeTime类型,DateTime.Now为当前时间
        textBox1.Text = Convert .ToString ( DateTime.Now);

例:按钮动态变大。

private void timer1_Tick(object sender, EventArgs e)
    {
        if (button1.Width > 200)
        {
            //停止计时器
            timer1.Enabled = false;
            return;
        }
        button1.Width = button1.Width + 5;
        button1.Height = button1.Height + 5;
        //if (button1.Width<200)
        //{
        //    button1.Width = button1.Width + 5;
        //    button1.Height = button1.Height + 5;
        //}

TextBox

文本框的几种模式:Multiline(多行)、PasswordChar(密码)
将文本框的PasswordChar设为*就是密码框效果,将MultiLine属性设置为true并且将高度拉到合适的大小就是多行效果,textBox4.AppendText(“hello”+"\n")就是附加一行。
控件名要有含义、控件名前缀的“潜规则”。
按钮Button:btn;文本框TextBox:txt;复选框CheckBox:cb。
控件的名字要有意义。
案例1:登录界面。登录错误三次退出程序,假设用户名、密码是admin、888888,不区分大小写。(易错点:局部变量与类变量)
退出程序this.Close()或者Application.Exit()

public partial class Form1 : Form
{
    private  int i = 0;
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        //显示的窗口就是Form1的对象,窗口不关对象就一直存在
        //int i = 0;//错
        if (i >= 3)
        {
            MessageBox.Show("错误次数过多");
            textBox1.ReadOnly  = true ;//设置不能输入
            this.Close();//关闭程序
            return;
        }
        if (textBox1.Text == "888888")
        {
            MessageBox.Show("密码正确");
        }
        else
        {
            MessageBox.Show("密码错误");
            i++;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_43393323/article/details/84918848