zoukankan      html  css  js  c++  java
  • Winform入门

    关于winForm开发说明

    【1】应用集中性:国内的C#上位机开发,HIS,ERP,MRP,二次开发,GIS等,几乎都是C#开发的!

    【2】学习必要性:是.NET平台和非.NET平台最早出现的,学好C#开发的必备。

    1.项目UI设计

    【1】C/S项目:首选是Winform原生控件(简单实用,但效果不太美观),直接拖放控件

                  第三方控件库:免费的控件库

                  WPF(界面设计上是最漂亮的,但是,学习成本较高)

                  自己动手设计UI:自定义控件(局限性:屏幕自适应较差)

    【2】B/S项目:HTML5原生设计(CSS+DIV)太麻烦,但是性能非常高!

                  jQueryUI,Extjs,EasyUI....

                  BootStrap框架(响应式设计,非常流行)

                  LayUI框架(学习简单,上手快,效果好,一般后台应用较多)

    2.常见的项目类型

    【1】控制台程序(主要是学习使用)

    【2】WinForm程序(Window程序,桌面程序,C/S程序,客户端程序)

    【3】Web程序和分布式服务程序(asp.net-webform,asp.net-mvc,webservice,webapi,wcf)

    3.不同项目部署差异

    【1】Winform程序:我们.NET开发程序,可以直接把生成的文件拷出来就能用了。不需要单独的安装包,我们打包程序

                      仅仅是把程序模块集中到一起而已,对注册表没有任何的修改。

                      部署:第一,如果有数据库,数据库会在专门的服务器上。

                            第二,应用程序,在独立的客户端电脑上。(通常会有多个客户端)

                            第三,项目升级服务器。

    【2】Web程序:我们开发的程序,通常只有一个服务器,通过IIS部署到服务器上,客户端其实就是浏览器。

                  部署:第一,数据库通常是独立的服务器。

                        第二,应用程序,在独立的服务器上。

    4.Winform程序设计

    【1】项目结构

         1.Properties文件夹:AssemblyInfo程序集信息的配置类(通常项目正式发布后,存储项目版本版权项目相关信息)

         2.窗体文件Form1

           包括:Form1.cs

                 Form1.Desinger.cs

    两个类的定义:

    public partial class Form1 : Form (双击窗体)
        {
            public Form1()
            {
                InitializeComponent();
            }

        }
    partial class Form1
    {
        //其他内容省略
    }
    结论:两个类的类名是完全一样的。
     

    【2】部分类(partial)

    当两个类在同一个命名空间下,类名称一样,但是使用partial关键字后,就意味着了两个类看着是两个类

    其实是一个类的不同的部分。

    目的:当一个类的内容太多的时候,我们编写和查找都容易出现不便。为了更好的管理类的代码,在vs2005

    的时候出现了部分类。

    public partial class Form1 : Form (双击窗体)
        {
            public Form1()
            {
                InitializeComponent();
            }
        }
    这个类里面的代码,主要是我们自己写的。
    下面是Designer文件中的代码
    partial class Form1
    {
        //其他内容省略
    }
    这里面主要是VS自动生成的代码
    好处:可以不同的人编写的同一类,当然目的是更好的对代码进行分类管理。最后还能编译成一个类。
    建议:不要轻易添加窗体的部分类。我们开发的一个建议:当我们这个类的内容太多的时候,请大家按照OOP原则
    将类的内容再次细分, 封装到其它类中。

    【3】常用控件

    按钮控件:当我们在窗体中添加一个Button后,其实是VS自动的根据Button类帮我们创建一个按钮对象,并自动

    设置了相关属性。

    private System.Windows.Forms.Button button1;这个说明按钮是窗体对象里面的一个成员变量(对象)。

    当我们通过属性窗口修改完控件的属性后,后台代码会自动修改:

    1this.btnTest.Location = new System.Drawing.Point(84, 60);
    2this.btnTest.Name = "btnTest";
    3this.btnTest.Size = new System.Drawing.Size(75, 23);
    4this.btnTest.TabIndex = 0;
    5this.btnTest.Text = "启动按钮";
    6this.btnTest.UseVisualStyleBackColor = true;

     建议:不要随便的手动从后台修改。但是,我们如果需要动态的创建控件,我们通常会自己先添加一个控件,设置属性后把这些代码复制到我们的相关的方法中,通过动态修改属性,来实现控件的动态控制。

    我们在添加一个下拉菜单控件

     1            // Form1
     2            // 
     3             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
     4             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     5             this.ClientSize = new System.Drawing.Size(800, 450);
     6             this.Controls.Add(this.comboBox1);
     7             this.Controls.Add(this.btnTest);
     8             this.Name = "Form1";
     9             this.Text = "Form1";
    10             this.Load += new System.EventHandler(this.Form1_Load);
    11             this.ResumeLayout(false);

    我们还发现在Form1中窗体的设置多了两个内容:

    this.Controls.Add(this.comboBox1);
    this.Controls.Add(this.btnTest);

    以上说明,我们窗体本身就是一个容器。窗体上所有的控件,都要添加到Controls集合中。

    如果我们在窗体中添加其他的容器,比如panel,groupbox等等,这些首先被添加到Form的Controls集合中。

    但是如果我们在panel等这些容器中添加空间的时候,控件会加到他所在的第一级容器中。

    启动窗体

     1 static class Program
     2     {
     3         /// <summary>
     4         /// 应用程序的主入口点。
     5         /// </summary>
     6         [STAThread]
     7         static void Main()
     8         {
     9             Application.EnableVisualStyles();
    10             Application.SetCompatibleTextRenderingDefault(false);
    11             Application.Run(new Form1());
    12         }
    13     }

    在这里是程序的入口,我们发现 Application.Run(new Form1());这句话告诉我们Form1窗体是作为项目的启动窗体

    启动窗体就是意味着项目的主线程运行,当我们关闭Form1窗体的时候,整个项目会退出。我们可以根据需要修改这个启动窗体。

    无边框窗体设计

    方法:

    1.窗体边框去掉。然后自己设计“边框”和颜色。 

    2.窗体大小,必须提前设计好。

    3.控件要扁平化处理。

     Event事件(我们还要学习很多的内容,委托-->事件:高级内容)

    在.NET平台上面,给我们所用的这些控件,封装了很多事件,就是对用户操作的某一个行为,进行封装。

    比如,当用户单击一个按钮的时候,单击这个动作,已经被封装成Click事件,那么我们只要把这个事件拿出来,

    当用户出发单击这个动作的时候,也就是这个事件被调用了,我们就可以在这个事件中,完成我们需要的任务。

    看下面两行代码:

    this.btnTest.Click += new System.EventHandler(this.btnTest_Click);

    private void btnTest_Click(object sender, EventArgs e)
    {
    }
    这两行代码是将控件的Click事件和事件方法关联。只要保证两个话颜色的代码指向相同的事件名称就可以了。
    sender:表示当前控件的对象。
    this.btnTest.Click -= new System.EventHandler(this.btnTest_Click); //接触事件关联
    要求学会:
    【1】能够找到我们需要的控件事件。
    【2】根据事件生成事件方法,并且编写业务逻辑。
    【3】如果事件不在需要,要知道如何把时间关联(委托)删除和时间方法删除。

    【4】窗体的两个事件,大家无比掌握,并且学会窗体关闭前的确认逻辑是如何处理的。

    private void Form1_Load(object sender, EventArgs e)
     {
     }
    窗体所有控件和初始化完毕后要执行的事件,我们通常不用。我们想完成控件或初始化内容,请在构造方法中写。

    两个窗体关闭事件:FormClosing和FormClosed

    FormClosing:窗体关闭之前发生的。

    FormClosed:窗体关闭之后发生的。

    事件的集中响应

    原理:就是相同的控件,可以关联同一个事件响应的方法。

    记住以下代码:

     1         foreach (Control item in this.Controls)
     2         {
     3             if (Item is Button)  //通过控件类型过滤掉我们不需要的控件
     4             {
     5                 Button btn = Item as Button;
     6                 if (btn.Tag.ToString() != "Save")  //过滤我们不需要的按钮,请大家特别注意Tag的使用
     7                 {
     8                     btn.Click += new System.EventHandler.(this.btn_Click);
     9                 }
    10             }
    11         } 
    12         private void btn_Click(object sender, EventArgs e)
    13         {
    14             Button btn = sender as Button;
    15             MessageBox.Show(btn.Tag.ToString());
    16         }
  • 相关阅读:
    Web自动化测试项目搭建(一) 需求与设计
    Python
    Selenium(七):截图显示等待
    14、ABPZero系列教程之拼多多卖家工具 新建微信公众号模块
    13、ABPZero系列教程之拼多多卖家工具 微信公众号开发前的准备
    12、ABPZero系列教程之拼多多卖家工具 拼团提醒功能登录拼多多实现
    11、ABPZero系列教程之拼多多卖家工具 拼团提醒功能页面实现
    10、ABPZero系列教程之拼多多卖家工具 拼团提醒逻辑功能实现
    9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装
    8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能
  • 原文地址:https://www.cnblogs.com/LiyuLi/p/12243218.html
Copyright © 2011-2022 走看看