zoukankan      html  css  js  c++  java
  • 窗体==>>初始Windows程序

     初识Windows程序

    01.创建Windows程序(VS)

        01.打开Visual Studio开发工具

        02.选择"文件"→"新建"→"项目" 命令.

        03.项目类型选择"Visual C#".

        04.模板选择"Windows窗体应用程序".

        05."起名"→"确认".

     

    02.认识Windows程序

    01.Form1.cs:窗口文件,程序员对窗体编写的代码一般都会存放在这个文件中

    02.Form.Designer.cs:窗体设计文件,其中的代码是由Visual Studio 自动生成的,一般不需要修改.

    03.Form.resx(Form.Designer.cs中):资源文件,用来配置当前窗体所使用的字符串.图片等资源.

    04.Program.cs:主程序文件,其中包含程序入口的main()方法.

    03.窗体的主要属性和方法

    1.常用属性

    (1)Name属性:用来获取或设置窗体的名称。
    (2)WindowState属性:用来获取或设置窗体的窗口状态。
    (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。
    (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。   
    (5)Width属性:用来获取或设置窗体的宽度。
    (6)Heigth属性:用来获取或设置窗体的高度。
    (7)Left属性:用来获取或设置窗体的左边缘的 x 坐标(以像素为单位)。
    (8)Top属性:用来获取或设置窗体的上边缘的 y 坐标(以像素为单位)。
    (9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。
    (10)MaximumBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。
    (11)MinimizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。
    (12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按 ENTER 键时就相当于单击了窗体上的该按钮。
    (13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。
    (14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。
    (15)ActiveControl属性:用来获取或设置容器控件中的活动控件。
    (16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。
    (17)AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。
    (18)BackColor属性:用来获取或设置窗体的背景色。
    (19)BackgroundImage属性:用来获取或设置窗体的背景图像。
    (20)Enabled属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。
    (21)Font属性:用来获取或设置控件显示的文本的字体。
    (22)ForeColor属性:用来获取或设置控件的前景色。
    (23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面 (MDI) 子窗体。
     
    (24)IsMdiContainer属性:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 中的子窗体的容器。
    (25)KeyPreview属性:该属性用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。
    (26)MdiChildren属性:数组属性。
    (27)MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体。
    (28)ShowInTaskbar属性:该属性用来获取或设置一个值,该值指示是否在 Windows 任务栏中显示窗体。
    (29)Visible属性:该属性获取或设置一个值,该值指示是否显示该窗体或控件。
    (30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。   
     

    2.常用方法

    (1)Show()方法
    该方法的作用是让窗体显示出来,其调用格式为:
    窗体名.Show();
    (2)Hide方法
    该方法的作用是把窗体隐藏出来,其调用格式为:
    窗体名.Hide();
    (3)Refresh方法
    该方法的作用是刷新并重画窗体,其调用格式为:
    窗体名.Refresh();
     
    (4)Activate方法
    该方法的作用是激活窗体并给予它焦点。其调用格式为:
    窗体名.Activate();
    (5)Close方法
    该方法的作用是关闭窗体。其调用格式为:
    窗体名.Close();
    (6)ShowDialog方法
    该方法的作用是将窗体显示为模式对话框。其调用格式为:
    窗体名.ShowDialog();  
     

    04.关于窗体项目的注意点:

              01.一个解决方案下可以包含多个项目,

                 一个项目下可以包含多个窗体

              02.如何设置一个项目下的某个窗体为启动窗体???

                 解析:通过更改Program.csMain方法中最后一行代码设置

               03.控件的Name属性相当于隐藏值,一定要改

                    真正在窗体显示内容的是Text属性

               04.如果一个解决方案下有多个项目,如何设置某个项目为启动项??

                解析:可以对项目点击右键→设为启动项

                05.机房的项目如何保存,或者保存后如何打开???

                  解析:可以将解决方案另存为到指定的项目下,下次

                    直接打开sln文件就可以了

                06.事件激发错误问题???

                  (这个正常,现在大家都事件的概念还不太理解,

                   随着学习的深入大家就会了解)

                 解析:注意什么时候激发事件

                 07.如何让窗体运行后无法改变大小?

                解析:通过如下设置:

               (01).禁用最大化按钮

                (02).设置FormBorderStyle属性为任何一个以Fixed开头的属性都OK

                                                                         

      

    05.MessageBox消息框

       参数一:提示信息

       参数二:标题文本

       参数三:按钮设置

       参数四:图标设置

     eg: MessageBox.Show("确定退出?","温馨提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

     分析:

    01.按钮设置中:

      成员名称                                    说明

     AbortRetryIgnore                      消息框包含“中止”、“重试”和“忽略”按钮。

     OK                                           消息框包含“确定”按钮。

     OKCancel                                  消息框包含“确定”和“取消”按钮。

     RetryCancel                               消息框包含“重试”和“取消”按钮。

     YesNo                                       消息框包含“是”和“否”按钮。

     YesNoCancel                              消息框包含“是”、“否”和“取消”按钮。

    02.图标设置中

        成员名称                                    说明

        None                                                     消息框中不显示小图标

       Warning /Exclamation                                   消息框中显示

       Asterisk /Information                                    消息框中显示                    

       Error /Hand/Stop                                          消息框中显示

        Question                                                     消息框中显示

    06.窗体的基本控件

    1.Label
    标签控件:显示用户不能编辑的文本,用户无法编辑。基本用法:
    label.Text=””显示文本;
    label.Visible=true/false是否隐藏控件。

    2.Button
    控件:允许用户通过单击来执行某种操作。
    基本用法:
     1)button.Text=””在按钮上显示文本;
    单击Button控件引发Click 事件,
    private void button_Click(object sender,EventArags e)。
     
    2)窗体的AcceptButton属性设置了用户每次按下Enter键都会 触发的按钮控件,
    this.AcceptButton=button。
     
    3)窗体的CancelButton属性设置了用户每次按下Esc键都会触 发的按钮控件,
    this.CancelButton=button。
     
    4)OnMouseEnter和OnMouseLeave事件实现鼠标指针移入移 出按钮控件时触发的事件。
     
    3.TextBox
    文本框控件:获取用户输入的数据或者显示文本,用户可
    以进行编辑,也可以设置成只读控件。基本用法:
    1)textBox.ReadOnly=true/false设置控件是否为只读。
     
    2)textBox.Text.Trim()方法可以将当前文本框中的字符串的前面 和末尾的空白字符全部移除。
     
    3)textBox.Focus()
    方法使光标焦点处于文本框中。
     
    4)textBox.PasswordChar=’’设置输入密码时文本框中显示的是 设置好的字符,
    textBox.UseSystemPasswordChar=true/false 设置输入密码时文本框中显示的是系统默认的字符’*’。
     
    5)textBox.BorderStyle属性设置文本框的边框类型。
     
    6) textBox.Multiline=true/false设置文本框控件可以输入多行数据。
     
    7)textBox.Width=和textBox.Height=属性设置文本框的宽和高。
     
    8)textBox.SelectionStart=Index属性和textBox.SelectionLength= 属性设置选择文本框中字符串的起始位置索引和要选择的长度。
     
    9)TextChanged事件设置当文本框中的文本发生更改时引发的事件,private  void  textbox_TextChanged(object gender,EventArgs e) 

    4.ComboBox

    07.窗体传值(重点)

     思路:从Login窗体传递登陆用户名到Main窗体,可以在Main窗体中定义一个公有的变量,然后在Login窗体的登陆按钮事件中编写如下代码:

      Main frm=new Main();

      frm.name=txtName.Text;

      frm.Show();

      然后在Main的load事件中为Label控件赋值。

    解析:1.在接受值的窗体中定义个变量.

         2.在显示Main窗体之前(Show之前)把值赋予name,

         3.如上图1中在Load中显示.

    08.一些例题

    01.制作计算器

    主要核心代码(在计算按钮下):

     private void button_jisuan_Click(object sender, EventArgs e)
            {
                if (textBox_one.Text!=""&& textBox_three.Text!="")
                {
                    double num1 = Convert.ToDouble(textBox_one.Text);
                    double num2 = Convert.ToDouble(textBox_three.Text);
                    String num = comboBox_two.Text;
                    double result;
                    switch (num)
                    {
    
                        case "+":
                            result = num1 + num2;
                            textBox_jieguo.Text = result.ToString();
                            break;
                        // MessageBox.Show(result.ToString());
                        case "-":
                            result = num1 - num2;
                            textBox_jieguo.Text = result.ToString();
                            break;
                        case "*":
                            result = num1 * num2;
                            textBox_jieguo.Text = result.ToString();
                            break;
                        case "/":
                            result = num1 / num2;
                            textBox_jieguo.Text = result.ToString();
                            break;
                        default:
                            break;
    
                    }
                }                    
                 if (textBox_one.Text=="")
                 {
                    MessageBox.Show("请输入第一个数","提示");
                 }
                 if (textBox_three.Text == "")
                 {
                     MessageBox.Show("请输入第二个数","提示");
    
                 }
                 if (comboBox_two.Text=="")
                 {
                      MessageBox.Show("请选择运算符","提示");
    
                 }
                     
            }

    2."日期"组合框中的月份改变后日会随之改变:如1-31,2-29,4-30
                    

    主要核心代码:

    01.在Load中

     private void data_Load(object sender, EventArgs e)
            {
                for (int i = 1; i <=12; i++)
                {
                    comboBox_yue.Items.Add(i);
                }
               
            }

    02.在月的SelectedexChanged事件中:

    private void comboBox_yue_SelectedIndexChanged(object sender, EventArgs e)
            {
                string result = comboBox_yue.Text;
                comboBox_ri.Items.Clear();
                switch (result)
                {
                    case "1":
                    case "3":
                    case "5":
                    case "7":
                    case "8":
                    case "10":
                    case "12":
                        for (int i = 1; i <= 31; i++)
                        {
                            comboBox_ri.Items.Add(i);
                        }
    
                        break;
                    case "4":
                    case "6":
                    case "9":
                    case "11":
                        for (int i = 1; i <= 30; i++)
                        {
                            comboBox_ri.Items.Add(i);
                        }
                        break;
                    case "2":
                        for (int i = 1; i <= 29; i++)
                        {
                            comboBox_ri.Items.Add(i);
                        }
                        break;
    
                    default:
                        break;
                }
            }

    3.猜数游戏(有提示.且在开始之前 "猜一猜"不能用,点了"新游戏"后才能用)
             

         

    核心代码:

     public partial class Guess : Form
        {
            public Guess()
            {
                InitializeComponent();
            }
            public int num = 0;//定义为接收随机数
            public int count = 0;
    //在"新游戏"的Click事件中
            private void button_new_Click(object sender, EventArgs e)
            {
                textBox_num.Clear();//清除上次显示记录
                button_guess.Enabled = true;//使"猜一猜"按钮可用了
                Random r = new Random();//为产生随机数
                num=r.Next(1,5);  //产生1-5之间的随机整数(包括1,不包括5)                             
            }
    
      
    //在"猜一猜"按钮的Click事件中
       private void button_guess_Click(object sender, EventArgs e)
            {
                count++;
                int num1 = 0;
                if (textBox_num.Text == ""){
                   MessageBox.Show("请输入要猜的数", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
               }
                if (textBox_num.Text != "")
                {
                    num1 = Convert.ToInt32(textBox_num.Text);
                                             
                        if (num > num1)
                        {
                       
                            MessageBox.Show("小了,再猜!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                           
                        }
                        else if (num < num1)
                        {
                            MessageBox.Show("大了,再猜!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                           
                        }
                        else
                        {
                          
                            MessageBox.Show("恭喜你,猜中了!!一共猜了" + count + "", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                          
                        }
    
                    
                }
            }
        }
  • 相关阅读:
    mysql5.7慢查询开启配置
    easyui的datagrid删除一条记录后更新出问题
    easyui跨iframe属性datagrid
    struts2笔记12-声明式异常
    struts2笔记11-OGNL
    struts2笔记10-值栈
    linux命令学习03-grep
    struts2笔记09-动态方法调用
    1、GIT简介
    玩转Python语言之4:奇技淫巧
  • 原文地址:https://www.cnblogs.com/zhangzongle/p/4995293.html
Copyright © 2011-2022 走看看