精华内容
下载资源
问答
  • windows窗体
    千次阅读
    2020-10-07 18:04:34

    本文代码仓库地址: gitee码云CSDN笔记仓库地址


    一、先新建项目,找到Windows窗体应用(.net Framework)
    在这里插入图片描述
    在这里插入图片描述

    二、在窗体上面拖控件

    1.主窗体
    控件:
    splitContainer:设置父窗体停靠
    treeView:放在splitContainer的panel1上面设置父窗体停靠,然后编辑节点,添加几个节点,按照自己的命名设置相关的属性;还可以设置【ShowLine: False】去掉前面的线,设置字体行间距啥的,【FullRowSelect: True】设置为满行选择

    2.新建一个窗体
    控件:groupBoxlabel*2、TextBoxcomboBoxcheckBox1buttondataGridViewcontextMenuStrip

    • contextMenuStrip是鼠标右键弹出选项的控件,里面需要添加一些自己设置右键弹出的内容,在那种情况下弹出和不弹出具体代码里面都有注释
    • 可以适当的设置他们的Anchor属性,在父窗体改变形状的时候会有用
    • 这个窗体我们是需要让其在主窗体里面显示,这里需要设置主窗体属性【isMdiContainer: True; 是设置为可以承载子窗体的一个父窗体】
    • 设置完主窗体设置本窗体属性【FormBorderStyle: None; 设置窗体为无边框窗体、WindowState: Maximized; 设置窗体显示时 为最大化】
      其中 dataGridView 的列设置为复选框的样式的设置如下图
      在这里插入图片描述

    主窗体代码代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp_xiaoyin01 {
      public partial class FrmMain_xy : Form {
        public FrmMain_xy()
        {
          InitializeComponent();
        }
    
        private void FrmMain_xy_Load(object sender, EventArgs e)
        {
          /* FrmMain_xy 窗体属性设置
           * isMdiContainer: True; 是设置为可以承载子窗体的一个父窗体
           *
           */
          FrmUserManager_xy FrmUserManager = new FrmUserManager_xy();
          // 他的 父MDI 为当前这个窗体
          FrmUserManager.MdiParent = this;
          // 他的父容器为 splitContainer1.Panel2
          FrmUserManager.Parent = splitContainer1.Panel2;
          // 显示在这个窗体容器中不能用 ShowDialog
          FrmUserManager.Show();
          // 模式显示窗体 FrmUserManager_xy(在窗体以外显示)
          // FrmUserManager.ShowDialog();
        }
    
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
          // 选择了某项后出发的事件
          // 每次选择节点前恢复之前的默认设置
          foreach (TreeNode node in treeView1.Nodes)
          {
            node.BackColor = Color.White;
            node.ForeColor = Color.Black;
          }
          // 设置选择的节点背景颜色为系统色高亮
          e.Node.BackColor = SystemColors.Highlight;
          // 设置前景色为白色
          e.Node.ForeColor = Color.White;
        }
      }
    }
    

    在这里插入图片描述


    在看子窗体代码之前先写好 SQLHelper 文件:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WindowsFormsApp_xiaoyin01.Utility {
      class SqlHelper {
        public static string ConStr { get; set; }
    
        /// <summary>
        /// SQL 查询操作
        /// </summary>
        /// <param name="sqlTxt">SQL语句</param>
        /// <returns>查询到的数据</returns>
        public static DataTable ExecuteTable(string sqlTxt)
        {
          // using:可以自动释放资源;SqlConnection:SQL连接
          using (SqlConnection conn = new SqlConnection(ConStr))
          {
            // 打开数据库
            conn.Open();
            // SQL命令的执行【conn就相当于执行的上方宝剑】(cmd 是管理员)
            SqlCommand cmd = new SqlCommand(sqlTxt, conn);
            // SQL适配器 (sda 是小推车,管理员推车小推车)
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            // 数据集 (ds 相当于汽车)
            DataSet ds = new DataSet();
            // 管理员把小推车里面的数据放进汽车里面
            sda.Fill(ds);
            // 到家后 拿出车上序号为 0 的数据进行返回
            return ds.Tables[0];
          }
        }
    
        /// <summary>
        /// SQL 增、删、改操作
        /// <param name="sqlTxt">SQL语句</param>
        /// </summary>
        /// <returns>受影响行数</returns>
        public static int ExecuteNonQuery(string sqlTxt)
        {
          // using:可以自动释放资源;SqlConnection:SQL连接
          using (SqlConnection conn = new SqlConnection(ConStr))
          {
            // 打开数据库
            conn.Open();
            // SQL命令的执行【conn就相当于执行的上方宝剑】(cmd 是管理员)
            SqlCommand cmd = new SqlCommand(sqlTxt, conn);
            // 返回受影响的行数
            int row = cmd.ExecuteNonQuery();
            if (row <= 0)
            {
              // 当没有受影响的行数时,返回的错误提示
              throw new Exception("亲,没有受影响的行数哦!!!");
            }
            return row;
          }
        }
        
      }
    }
    

    打开 App.config 文件:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    	<connectionStrings>
    		<!-- 添加一个节点 connectionStrings:连接字符串   Data Source:数据库ip,database:数据库名称,uid:数据库账号,pwd:数据库密码 -->
    		<add name="ConStr" connectionString="Data Source=127.0.0.1; database=yin; uid=sa; pwd=YINhui1998"/>
    	</connectionStrings>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
        </startup>
    </configuration>
    

    自己新建的子窗体代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using WindowsFormsApp_xiaoyin01.Models;
    
    namespace WindowsFormsApp_xiaoyin01 {
      public partial class FrmUserManager_xy : Form {
        public FrmUserManager_xy()
        {
          InitializeComponent();
        }
    
        private void FrmUserManager_xy_Load(object sender, EventArgs e)
        {
          BindCbx();
          BindDgv();
        }
    
        private void BindDgv()
        {
          // 通过下面三个字段进行筛选
          string userName = TextBox1.Text.Trim();
          int baseTypeId = (int)comboBox1.SelectedValue;
          bool isStop = checkBox1.Checked;
          // 取消自动填充数据【没有手动添加的数据不会生成新的列】
          dataGridView1.AutoGenerateColumns = false;
          List<UserAppraisalBases> userAppraisalBases01 = UserAppraisalBases.GetListJoinAppraisal();
          if (baseTypeId == 0)
          {
            dataGridView1.DataSource = userAppraisalBases01.FindAll(m => m.UserName.Contains(userName) && m.IsDel == isStop);
          }
          else
          {
            dataGridView1.DataSource = userAppraisalBases01.FindAll(m => m.UserName.Contains(userName) && m.BaseTypeld == baseTypeId && m.IsDel == isStop);
          }
        }
    
        /// <summary>
        /// 绑定 comboBox1 ,向 comboBox1 中添加数据
        /// </summary>
        private void BindCbx()
        {
          /* FrmUserManager_xy 窗体设置
           * FormBorderStyle: None; 设置窗体为无边框窗体
           * WindowState: Maximized; 设置窗体显示时 为最大化
           **/
          List<AppraisalBases_xy> AppraisalBases = new List<AppraisalBases_xy>();
          AppraisalBases.Add(new AppraisalBases_xy
          {
            Id = 0,
            BaseType = "-查询所有-",
            AppraisalBase = 0,
            IsDel = false
          });
          // List 是它的子类
          IEnumerable<AppraisalBases_xy> AppraisalBases02 = AppraisalBases_xy.ListAll();
          // AddRange添加范围:添加整个 ListAll 集合
          // 显示接受的是 IEnumerable 集合,但是也可以直接接受 List 集合,是因为 里氏替换原则:面向对象的基本原则之一【父类可以接受子类】
          AppraisalBases.AddRange(AppraisalBases02);
    
          /* AppraisalBases = AppraisalBases_xy.ListAll();
          // 向集合中角标为 0 的地方插入一条数据
          AppraisalBases.Insert(0, new AppraisalBases_xy
          {
            Id = 0,
            BaseType = "-查询所有-",
            AppraisalBase = "0",
            IsDel = "false"
          }); */
    
          // 获取数据源,为 List 里面的数据【是一些很恶心的东西,需要下面显示正确的】
          comboBox1.DataSource = AppraisalBases;
          // 显示的正常的数据
          comboBox1.DisplayMember = "BaseType";
          // 数据表里面的数据有关联的
          comboBox1.ValueMember = "id";
          // 不建议使用下面的方法给 comboBox1 添加数据
          //comboBox1.Text = "-查询所有-";
          //comboBox1.Items.Add("-查询所有-");
          //foreach (var appraisalBases in AppraisalBases)
          //{
          //  comboBox1.Items.Add(appraisalBases.BaseType);
          //}
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
          BindDgv();
        }
    
        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
          // 鼠标点击控件所有区域
          // 如果鼠标是右键点击
          if(e.Button == MouseButtons.Right)
          {
            tsmAdd.Visible = true;
            tsmEdit.Visible = false;
            tsmStart.Visible = false;
            tsmStop.Visible = false;
          }
        }
    
        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
          // 鼠标点击控件单元格区域
          // dataGridView1.SelectionMode = RowHeaderSelect【默认为选中某个单元格】,改成 FullRowSelect【选中一行】
          // dataGridView1.MultiSelect = True【默认:允许多行选择】,改成 false【禁止多行选择】
          if (e.Button == MouseButtons.Right)
          {
            // 如果选中了某行
            if (e.RowIndex > -1)
            {
              // 鼠标右键选中当前行
              dataGridView1.Rows[e.RowIndex].Selected = true;
              tsmAdd.Visible = true;
              tsmEdit.Visible = true;
              // 选择的行的下标为0的行,下面的属性名为 IsDel 的值
              bool isDel = (bool)dataGridView1.SelectedRows[0].Cells["IsDel"].Value;
              // 如果选择行的 IsDel 为True【表示为已停职】
              if (isDel)
              {
                tsmStart.Visible = true;
              }
              else
              {
                tsmStop.Visible = true;
              }
            }
          }
        }
    
        private void tsmAdd_Click(object sender, EventArgs e)
        {
          FrmSetUser FrmSetUser01 = new FrmSetUser();
          FrmSetUser01.ShowDialog();
        }
      }
    }
    

    在这里插入图片描述


    右键弹出选项,选择新建会弹出一个选项框,这里又需要新建一个窗体:

    控件:groupBox2、label3、textBox、comboBox*2、checkBox、button

    • 设置属性可以参考前面的,都差不多的

    具体代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using WindowsFormsApp_xiaoyin01.Models;
    
    namespace WindowsFormsApp_xiaoyin01 {
      public partial class FrmSetUser : Form {
        public FrmSetUser()
        {
          InitializeComponent();
        }
    
        // FormBorderStyle: FixedToolWindow; 设置窗体样式
        private void FrmSetUser_Load(object sender, EventArgs e)
        {
          List<AppraisalBases_xy> AppraisalBases = new List<AppraisalBases_xy>();
          AppraisalBases = AppraisalBases_xy.ListAll();
          comboBox1.DataSource = AppraisalBases;
          // 显示的正常的数据
          comboBox1.DisplayMember = "BaseType";
          // 数据表里面的数据有关联的
          comboBox1.ValueMember = "id";
        }
    
      }
    }
    

    在这里插入图片描述


    三、前面忘了还有Models文件夹下面的两个文件

    • AppraisalBases_xy.cs 文件:
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using WindowsFormsApp_xiaoyin01.Utility;
    
    namespace WindowsFormsApp_xiaoyin01.Models {
      class AppraisalBases_xy {
        public int Id { get; set; }
        public string BaseType { get; set; }
        public int AppraisalBase { get; set; }
        public bool IsDel { get; set; }
    
        public static List<AppraisalBases_xy> ListAll()
        {
          List<AppraisalBases_xy> AppraisalBases = new List<AppraisalBases_xy>();
          DataTable dt = SqlHelper.ExecuteTable("SELECT * FROM s01_AppraisalBases");
          foreach (DataRow dRow in dt.Rows)
          {
            AppraisalBases.Add(ToModel(dRow));
          }
          return AppraisalBases;
        }
    
        // 把数据库里面的对象,转换成实体对象
        private static AppraisalBases_xy ToModel(DataRow dr)
        {
          AppraisalBases_xy AppraisalBases = new AppraisalBases_xy();
          AppraisalBases.Id = (int)dr["id"];
          AppraisalBases.BaseType = dr["BaseType"].ToString();
          AppraisalBases.AppraisalBase = (int)dr["AppraisalBase"];
          AppraisalBases.IsDel = (bool)dr["IsDel"];
          return AppraisalBases;
        }
    
      }
    }
    
    • UserAppraisalBases.cs 文件:
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using WindowsFormsApp_xiaoyin01.Utility;
    
    namespace WindowsFormsApp_xiaoyin01.Models {
      public class UserAppraisalBases {
        public int Id { get; set; }
        public string UserName { get; set; }
        public string Sex { get; set; }
        public int BaseTypeld { get; set; }
        public string BaseType { get; set; }
        public int AppraisalBase { get; set; }
        public bool IsDel { get; set; }
    
        public static List<UserAppraisalBases> GetListJoinAppraisal()
        {
          List<UserAppraisalBases> UserAppraisalBases02 = new List<UserAppraisalBases>();
          DataTable dt = SqlHelper.ExecuteTable("SELECT a.id,a.UserName,a.sex,b.BaseType,a.BaseTypeld,b.AppraisalBase,a.isDel FROM s01_Users AS a LEFT JOIN s01_AppraisalBases AS b ON a.BaseTypeld=b.id");
          foreach (DataRow dr02 in dt.Rows)
          {
            UserAppraisalBases02.Add(ToMode(dr02));
          }
          return UserAppraisalBases02;
        }
    
        private static UserAppraisalBases ToMode(DataRow dr)
        {
          UserAppraisalBases UserAppraisalBases01 = new UserAppraisalBases();
          UserAppraisalBases01.Id = (int)dr["Id"];
          UserAppraisalBases01.UserName = dr["UserName"].ToString();
          UserAppraisalBases01.Sex = dr["Sex"].ToString();
          UserAppraisalBases01.BaseTypeld = (int)dr["BaseTypeld"];
          UserAppraisalBases01.BaseType = dr["BaseType"].ToString();
          UserAppraisalBases01.AppraisalBase = (int)dr["AppraisalBase"];
          UserAppraisalBases01.IsDel = (bool)dr["IsDel"];
          return UserAppraisalBases01;
        }
    
      }
    }
    

    待修改完善,后续已发
    C# .net Framework Windows窗体应用【02】

    笔记源码


    一点点笔记,以便以后翻阅。

    更多相关内容
  • visual studio 2019 Windows窗体应用小游戏 贪吃蛇,适合初学者理解,程序注释里有我的自己对于贪吃蛇游戏思路的理解分析
  • 763154.zip,How-to-save-all-form-data-from-a-Windows-Form-Appl.pdf
  • Windows窗体检查器

    2021-04-04 12:38:05
    嗨!您知道如何对Windows窗体(托管和非托管窗口)进行相同的检查吗?如果您能提供帮助,我非常感谢。谢谢!Gutemberg [已删除电子邮件]
  • 用C#创建一个简单的windows窗体应用,供大家参考,具体内容如下 编译环境,本人用的VS2013。 打开vs2013,新建项目 选择C#,创建windows窗体应用   自定义名称及存储位置 创建完成之后界面 从工具箱中添加控件 ...
  • 使用Visual Studio,C#语言编写的Windows窗体应用程序。能实现 四则混合运算的 计算器。
  • 第一次写这样的windows窗体程序,为了达到操作系统里提供的计算器的功能,本计算器,大量使用了if条件语句;个人能力毕竟有限,希望大家批评指正,小弟感激不尽!!!
  • Windows 窗体开发指南.pdf
  • 学习C#的时候写的项目:使用C#编写的Windows窗体计算器程序
  • C#学习教程12——Windows窗体应用程序

    万次阅读 多人点赞 2022-03-07 12:38:02
    文章目录 12.Windows窗体应用程序 12.1 创建Windows窗体应用程序 12.2 窗体属性 12.3 窗体事件 12.4 窗体方法 12.5 McssageBox:消息框 12.6 控件 12.7 Label和LinkLabel:标签控件 12.8 TextBox:文本框控件 12.9 ...

    12.Windows窗体应用程序

    WinFormWindows Form的简称,是基于.NET Framework平台的客户端(PC软件)开发技术,一般使用C#编程。Windows应用程序与Windows操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。

    12.1 创建Windows窗体应用程序

    • 在Visual Studio 2019软件中,点击创建新项目。

    在这里插入图片描述

    • 选择Windows窗体应用,点击下一步。

    在这里插入图片描述

    • 设置配置信息后点击下一步。

    在这里插入图片描述

    • 默认选择目标框架.NET Core 3.1后可完成Windows窗体应用程序的创建。

    在这里插入图片描述

    在每一个Windows窗体应用程序的项目文件夹中,都会有一个默认的窗体程序Form1.cs,并且在项目的Program.cs文件中指定要运行的窗体。

    Program.cs 文件的代码如下。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        static class Program
        {
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.SetHighDpiMode(HighDpiMode.SystemAware);
                // 用于启动应用程序中可视的样式,如果控件和操作系统支持,那么 控件的绘制就能根据显不风格来实现
                Application.EnableVisualStyles();
                // 控件支持UseCompatibleTextRenderingproperty属性,该方法将此属性设置为默认值
                Application.SetCompatibleTextRenderingDefault(false);
                // 用于设置在当前项目中要启动的窗体,new Form1()即为要启动的窗体
                Application.Run(new Form1());
            }
        }
    }
    
    

    在Windows窗体应用程序中界面是由不同类型的控件构成的,系统中默认的控件全部存放到工具箱中,工具箱在视图选项卡下,如下图所示。
    在这里插入图片描述

    在工具箱中将控件划分为公共控件、容器、菜单和工具栏、数据、组件、打印、对话框等。

    12.2 窗体属性

    每一个Windows窗体应用程序都是由若干个窗体构成的,窗体中的属性主要用于设置窗体的外观。

    在Windows窗体应用程序中右击窗体,在弹出的右键菜单中选择属性,弹出如下图所示的属性面板。

    在这里插入图片描述

    窗体的常用属性如下表所示。

    属性作用
    Design:Name用来获取或设置窗体的名称
    布局:WindowState获取或设置窗体的初始可视状态,取值有3种,即Normal(正常)、Minimized(最小化)、Maximized(最大化),默认为Normal,即正常显示
    布局:StartPosition获取或设置窗体第一次出现时的位置,取值有5种,即Manual(窗体位置由Location属性决定)、CenterScreen(屏幕居中)、WindowsDefaultLocation( Windows默认位置)、WindowsDefaultBounds(Windows默认位置,边界由Windows决定)、CenterParent(在父窗体中居中),默认为WindowsDefaultLocation
    窗口样式:Icon获取或设置窗体上显示的图标
    窗口样式:MaximizeBox获取或设置窗体标题栏右上角是否有最大化按钮,默认为True
    窗口样式:MinimizeBox获取或设置窗体标题栏右上角是否有最小化按钮,默认为True
    外观:Text获取或设置窗口标题栏中的文字
    外观:BackColor获取或设置窗体的背景色
    外观:BackgroundImage获取或设置窗体的背景图像
    外观:BackgroundImageLayout获取或设置图像布局,取值有 5 种,即None(图片居左显示)、Tile(图像重复,默认值)、Stretch(拉伸)、Center(居中)、Zoom(按比例放大到合适大小)
    外观:Font获取或设置窗体上文字的字体
    外观:ForeColor获取或设置窗体上文字的颜色
    行为:Enabled获取或设置窗体是否可用

    下面实现一个简单的Windows窗体应用程序,部分属性取值如下。

    属性属性值
    NameForm1
    StartPositionCenterScreen
    Text第一个窗体
    MaximizeBoxFalse
    MinimizeBoxFalse
    Backgroundimageexample.jpg
    BackgroundlmageLayoutStretch

    在上述属性中除了背景图片 (Backgroundimage) 属性以外,其他属性直接添加上表中对应的属性值即可。设置背景图片属性 (Backgroimdlmage)的方法是单击Backgroundimage属性后的按钮,在弹出的对话框中单击“导入”按钮。

    在这里插入图片描述

    每一个Windows窗体应用程序在运行时仅能指定一个启动窗体,设置启动窗体的方式是在项目的Program.cs文件中指定。具体的代码如下。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        static class Program
        {
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.SetHighDpiMode(HighDpiMode.SystemAware);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    

    最后按Ctrl+F5键运行程序,效果如下图所示。

    在这里插入图片描述

    12.3 窗体事件

    在窗体属性面板中单击闪电图标即可查看到窗体中的事件,如下图所示。

    在这里插入图片描述

    事件作用
    行为:Load窗体加载事件,在运行窗体时即可执行该事件
    操作:MouseClick鼠标单击事件
    操作:MouseDoubleClick鼠标双击事件
    鼠标:MouseMove鼠标移动事件
    钥匙:KeyDown键盘按下事件
    钥匙:KeyUp键盘释放事件
    行为:FormClosing窗体关闭事件,关闭窗体时发生
    行为:FormClosed窗体关闭事件,关闭窗体后发生

    下面的例子通过事件操作改变窗体背景颜色。

    • 在事件界面中选中需要创建的事件,并双击该事件右侧的单元格,系统会自动为其生成对应事件的处理方法。

    在这里插入图片描述

    • 设置好事件后会在窗体对应的代码文件中自动生成与事件对应的4个方法,代码如下。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
    
            }
    
            private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    
    • 添加事件处理代码,除了可以在属性面板中设置外,使用代码设置的方式是使用this关键字代表当前窗体的实例。、
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
                //设置窗体背景颜色为黑色
                this.BackColor = Color.Black;
            }
    
            private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                //设置窗体背景颜色为蓝色
                this.BackColor = Color.Blue;
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //设置窗体颜色为红色
                this.BackColor = Color.Red;
            }
        }
    }
    
    • 设置启动窗体,在Program.cs类中将Form1窗体设置为启动窗体。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        static class Program
        {
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.SetHighDpiMode(HighDpiMode.SystemAware);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                // 设置启动窗体
                Application.Run(new Form1());
            }
        }
    }
    

    12.4 窗体方法

    自定义的窗体都继承自System.Windows.Form类,能使用Form类中已有的成员,包括属性、方法、事件等。

    方法作用
    void Show()显示窗体
    void Hide()隐藏窗体
    DialogResult ShowDialog()以对话框模式显示窗体
    void CenterToParent()使窗体在父窗体边界内居中
    void CenterToScreen()使窗体在当前屏幕上居中
    void Activate()激活窗体并给予它焦点
    void Close()关闭窗体

    下面的例子实现在一个窗体中打开另外一个窗体。

    • 在项目中创建两个窗体。

    在这里插入图片描述

    • 设置Form1窗体的事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
                //创建Form2窗体实例
                Form2 form2 = new Form2();
                //打开form2窗体
                form2.Show();
            }
        }
    }
    
    • 设置Form2窗体的事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            private void Form2_MouseClick(object sender, MouseEventArgs e)
            {
                //将窗体居中
                this.CenterToScreen();
            }
    
            private void Form2_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                //关闭窗体
                this.Close();
            }
        }
    }
    
    • 将Form1窗体设置为启动窗体。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        static class Program
        {
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.SetHighDpiMode(HighDpiMode.SystemAware);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //设置启动窗体
                Application.Run(new Form1());
            }
        }
    }
    

    在使用窗体中的方法时需要注意,如果是当前窗体需要调用方法直接使用 this关键字代表当前窗体,通过this.方法名(参数列表)的方式调用即可。如果要操作其他窗体,则需要用窗体的实例来调用方法。

    12.5 McssageBox:消息框

    在Windows窗体应用程序中向用户提示操作时采用消息框弹出的形式。消息框是通过McssageBox类来实现的,定义了 Show 的多个重载方法,该方法的作用就是弹出一个消息框。由于Show方法是一个静态的方法,因此调用该方法只需要使用MessageBox.Show(参数)的形式即可弹出消息框。

    方法说明
    DialogResult Show(string text)指定消息框中显示的文本(text)
    DialogResult Show(string text, string caption)指定消息框中显示的文本(text)以及消息框的标题(caption)
    DialogResult Show(string text, string caption, MessageBoxButtons buttons)指定消息框中显示的文本(text)、消息框的 标题(caption)以及消息框中显示的按钮 (buttons)
    DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)指定消息框中显示的文本(text)、消息框的 标题(caption )、消息框中显示的按钮 (buttons)以及消息框中显示的图标(icon)

    在上面所列出方法的参数中涉及两个枚举类型MessageBoxButtons和MessageBoxIcon。

    MessageBoxButtons枚举类型主要用于设置消息框中显示的按钮,具体的枚举值如下:

    • OK:在消息框中显示“确定”按钮。
    • OKCancel:在消息框中显示“确定”和“取消”按钮。
    • AbortRetryIgnore:在消息框中显示“中止” “重试”和“忽略”按钮。
    • YesNoCancel:在消息框中显示“是” “否”和“取消”按钮。
    • YesNo:在消息框中显示“是”和“否”按钮。
    • RetryCancel:在消息框中显示“重试”和“取消”按钮。

    MessageBoxIcon枚举类型主要用于设置消息框中显示的图标,具体的枚举值如下。

    • None:在消息框中不显示任何图标。
    • Hand、Stop、Error:在消息框中显示由一个红色背景的圆圈及其中的白色X组成 的图标。
    • Question:在消息框中显示由圆圈和其中的一个问号组成的图标。
    • Exclamation、Warning:在消息框中显示由一个黄色背景的三角形及其中的一个感叹号组成的图标。
    • Asterisk、Information:在消息框中显示由一个圆圈及其中的小写字母i组成的图标。

    调用 MessageBox 类中的Show方法将返回一个DialogResult类型的值。DialogResult也是一个枚举类型,是消息框的返回值,通过单击消息框中不同的按钮得到不同的消息框返回值。具体值如下。

    • None:消息框没有返回值,表明有消息框继续运行。
    • OK:消息框的返回值是0K(通常从标签为“确定”的按钮发送)。
    • Cancel:消息框的返回值是Cancel(通常从标签为“取消”的按钮发送)。
    • Abort:消息框的返回值是Abort(通常从标签为“中止”的按钮发送)。
    • Retry:消息框的返回值是Retry(通常从标签为“重试”的按钮发送)。
    • Ignore:消息框的返回值是Ignore(通常从标签为“忽略“的按钮发送)。
    • Yes:消息框的返回值是Yes(通常从标签为“是“的按钮发送)。
    • No:消息框的返回值是No(通常从标签为“否“的按钮发送)。

    下面的例子实现通过消息框提示打开新窗体。

    • 在项目中创建两个窗体。
    • 设置Form1窗体的事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseClick(object sender, MouseEventArgs e)
            {
                //弹出消息框,并获取消息框的返回值
                DialogResult dr = MessageBox.Show("是否打开新窗体?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                //如果消息框返回值是Yes,显示新窗体
                if (dr == DialogResult.Yes)
                {
                    Form2 form2 = new Form2();
                    form2.Show();
                }
                //如果消息框返回值是No,关闭当前窗体
                else if (dr == DialogResult.No)
                {
                    //关闭当前窗体
                    this.Close();
                }
            }
        }
    }
    
    • 设置项目的启动窗体Form1。

    12.6 控件

    在Windows窗体应用程序中每个窗体都是由若干个控件构成的。控件就是指能输入文本的位置、能选择的位置、能单击的位置、图片显示的位置等。其中:

    • 能输入文本的位置对应于Windows窗体应用程序中的文本框、多行文本框等。
    • 能选择的位置对应于Windows窗体应用程序中的复选框、单选按钮、下拉列表框。
    • 能单击的位置对应于Windows窗体应用程序中的按钮、超链接标签、菜单栏、工具栏等。
    • 图片显示的位置对应于Windows窗体应用程序中的图片控件。

    12.7 Label和LinkLabel:标签控件

    通常使用标签控件来显示文本,标签控件王要分为普通的标签(Label)和超链接形式的标签(LinkLabel) 。

    属性名作用
    Name标签对象的名称,区别不同标签唯一标志
    Text标签对象上显示的文本
    Font标签中显示文本的样式
    ForeColor标签中显示文本的颜色
    BackColor标签的背景颜色
    Image标签中显示的图片
    AutoSize标签的大小是否根据内容自动调整,True为自动调整,False为用户自定义大小
    Size指定标签控件的大小
    Visible标签是否可见,True 为可见,False 为不可见

    普通标签控件(Label)中的事件与窗体的事件类似,常用的事件主要有鼠标单击事件、 鼠标双击事件、标签上文本改变的事件等。

    超链接标签控件(LinkLabel)也具有相同的属性和事件,主要应用的事件是鼠标单击事件。

    下面的例子实现通过超链接单击事件交换两个普通标签的文本信息。

    • 在工具箱中设置控件并修改文本信息。

    在这里插入图片描述

    在这里插入图片描述

    • 双击超链接文本创建点击事件。

    在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    		// 超链接点击事件
            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                //交换标签上的信息。
                string temp = label1.Text;
                label1.Text = label2.Text;
                label2.Text = temp;
            }
        }
    }
    

    12.8 TextBox:文本框控件

    文本框(TextBox)是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。

    属性名作用
    Text文本框对象中显示的文本
    MaxLength在文本框中最多输入的文本的字符个数
    WordWrap文本框中的文本是否自动换行,如果是True,则自动换行,如果是False,则不能自动换行
    PasswordChar将文本框中出现的字符使用指定的字符替换,通常会使用*字符
    Multiline指定文本框是否为多行文本框,如果为True,则为多行文本框,如果为False,则为单行文本框
    ReadOnly指定文本框中的文本是否可以更改,如果为True,则不能更改,即只读文本框,如果为False,则允许更改文本框中的文本
    Lines指定文本框中文本的行数
    ScrollBars指定文本框中是否有滚动条,如果为True,则有滚动条,如果为False, 则没有滚动条

    文本框控件最常使用的事件是文本改变事件(TextChange),即在文本框控件中的内容改变时触发该事件。

    下面的例子实现简单的登录窗体。

    • 设置控件信息。

    在这里插入图片描述

                // textBox1
                // 
                this.textBox1.Location = new System.Drawing.Point(310, 112);
                this.textBox1.Name = "textBox1";
                this.textBox1.Size = new System.Drawing.Size(125, 27);
                this.textBox1.TabIndex = 0;
                // 
                // textBox2
                // 
                this.textBox2.Location = new System.Drawing.Point(310, 174);
                this.textBox2.Name = "textBox2";
    			// 密码框,将用户输入的密码用*替代
                this.textBox2.PasswordChar = '*';
                this.textBox2.Size = new System.Drawing.Size(125, 27);
                this.textBox2.TabIndex = 1;
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(240, 113);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(69, 20);
                this.label1.TabIndex = 2;
                this.label1.Text = "用户名:";
                // 
                // label2
                // 
                this.label2.AutoSize = true;
                this.label2.Location = new System.Drawing.Point(240, 175);
                this.label2.Name = "label2";
                this.label2.Size = new System.Drawing.Size(54, 20);
                this.label2.TabIndex = 3;
                this.label2.Text = "密码:";
                // 
                // linkLabel1
                // 
                this.linkLabel1.AutoSize = true;
                this.linkLabel1.Location = new System.Drawing.Point(310, 266);
                this.linkLabel1.Name = "linkLabel1";
                this.linkLabel1.Size = new System.Drawing.Size(39, 20);
                this.linkLabel1.TabIndex = 4;
                this.linkLabel1.TabStop = true;
                this.linkLabel1.Text = "登录";
                this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); 
    
    • 设置超链接点击事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                //获取用户名
                string username = textBox1.Text;
                //获取密码
                string password = textBox2.Text;
                //判断用户名密码是否正确
                if ("Kint".Equals(username) && "1111".Equals(password))
                {
                    MessageBox.Show("登录成功!");
                }
                else
                {
                    MessageBox.Show("登录失败!");
                }
            }
        }
    }
    

    12.9 Button:按钮控件

    按钮主要用于提交页面的内容,或者是确认某种操作等。常用的属性包括在按钮中显示的文字 (Text) 以及按钮外观设置的属性,最常用的事件是单击事件。

    下面的例子实现一个简单的用户注册功能,并将提交的注册信息显示在新窗体的文本框中。

    • 设置Form1控件和Form2控件

    在这里插入图片描述

    在这里插入图片描述

    • 在注册时判断用户名和密码不能为空,并且要求两次输入的密码一致,设置Form1中的按钮代码如下。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            //“确定”按钮的单击事件,用于判断注册信息并跳转到新窗口显示注册信息
            private void button1_Click(object sender, EventArgs e)
            {
                string name = textBox1.Text;
                string pwd = textBox2.Text;
                string repwd = textBox3.Text;
                if (string.IsNullOrEmpty(name))
                {
                    MessageBox.Show("用户名不能为空!");
                    return;
                }
                else if (string.IsNullOrEmpty(textBox2.Text))
                {
                    MessageBox.Show("密码不能为空!");
                    return;
                }
                else if (!textBox2.Text.Equals(textBox3.Text))
                {
                    MessageBox.Show("两次输入的密码不一致!");
                    return;
                }
                //将用户名和密码传递到Form2中
                Form2 form2 = new Form2(name, pwd);
                form2.Show();
            }
            //“取消”按钮的事件,用于关闭窗体
            private void button2_Click(object sender, EventArgs e)
            {
                //关闭窗体
                this.Close();
            }
        }
    }
    
    • 设置Form2中的代码。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form2 : Form
        {
            public Form2(string name, string pwd)
            {
                InitializeComponent();
                label2.Text = "用户名:" + name;
                label3.Text = "密  码:" + pwd;
            }
        }
    }
    

    12.10 RadioButton:单选按钮控件

    RadioButton是单选按钮控件,多个RadioButton控件可以为一组,这一组内的RadioButton控件只能有一个被选中。

    下面通过一个例子使用单选按钮控件。

    • 设置控件。

    在这里插入图片描述

    • 设置确认按钮点击事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    		// 单击“确定”按钮的事件
            private void button1_Click(object sender, EventArgs e)
            {
                string msg = "";
                if (radioButton1.Checked)
                {
                    msg = radioButton1.Text;
                }
                else if (radioButton2.Checked)
                {
                    msg = radioButton2.Text;
                }
                else if (radioButton3.Checked)
                {
                    msg = radioButton3.Text;
                }
                MessageBox.Show("您喜欢的编程语言是:" + msg, "提示");
            }
        }
    }
    

    Checked属性可用于判断单选按钮是否被选中。如果该属性的返回值为True,则代表选中;如果返回值为False,则表示未选中。

    在这里插入图片描述

    12.11 CheckBox:复选框控件

    复选框主要的属性有:

    • Name:表示这个组件的名称;
    • Text:表示这个组件的标题;
    • Checked:表示这个组件是否已经选中。

    主要的事件就是CheckedChanged事件。

    下面通过一个例子使用复选框控件。

    • 设置控件。

    在这里插入图片描述

    • 设置点击事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string msg = "";
                // 界面上的每一个控件都继承自Control类
                foreach (Control c in Controls)
                {
                    //判断控件是否为复选框控件
                    if (c is CheckBox)
                    {
                        if (((CheckBox)c).Checked)
                        {
                            msg = msg + " " + ((CheckBox)c).Text;
                        }
                    }
                }
                if (msg != "")
                {
                    MessageBox.Show("您选择的爱好是:" + msg, "提示");
                }
                else
                {
                    MessageBox.Show("您没有选择爱好", "提示");
                }
            }
        }
    }
    

    在这里插入图片描述

    12.12 CheckedListBox:复选列表框控件

    复选列表框显示的效果与复选框类似,但在选择多个选项时操作比一般的复选框更方便。

    下面通过一个例子使用复选列表框控件。

    • 设置控件。

    在这里插入图片描述

    			// checkedListBox1
                // 
                this.checkedListBox1.FormattingEnabled = true;
    			// 设置可选项
                this.checkedListBox1.Items.AddRange(new object[] {
                "苹果",
                "香蕉",
                "梨"});
                this.checkedListBox1.Location = new System.Drawing.Point(275, 135);
                this.checkedListBox1.Name = "checkedListBox1";
                this.checkedListBox1.Size = new System.Drawing.Size(165, 136);
                this.checkedListBox1.TabIndex = 18;
                // 
    
    • 设置按钮点击事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                string msg = "";
                for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
                {
                    msg = msg + " " + checkedListBox1.CheckedItems[i].ToString();
                }
                if (msg != "")
                {
                    MessageBox.Show("您购买的水果有:" + msg, "提示");
                }
                else
                {
                    MessageBox.Show("您没有选购水果!", "提示");
                }
            }
        }
    }
    

    在这里插入图片描述

    在使用复选列表框控件时需要注意获取列表中的项使用的是Checkedltems属性,获取当前选中的文本(上图中蓝色的区域)使用的是 Selectedltem属性。

    12.13 ListBox:列表框控件

    列表框 (ListBox) 将所提供的内容以列表的形式显示出来,可以选择其中的一项或多项内容。

    属性名作用
    MultiColumn获取或设置列表框是否支持多列,如果设置为 True,则表示支持多列; 如果设置为 False,则表示不支持多列,默认为 False
    Items获取或设置列表框控件中的值
    SelectedItems获取列表框中所有选中项的集合
    SelectedItem获取列表框中当前选中的项
    SelectedIndex获取列表框中当前选中项的索引,索引从 0 开始
    SelectionMode获取或设置列表框中选择的模式,当值为 One 时,代表只能选中一项, 当值为 MultiSimple 时,代表能选择多项,当值为 None 时,代表不能选 择,当值为 MultiExtended 时,代表能选择多项,但要在按下 Shift 键后 再选择列表框中的项

    列表框还提供了一些方法来操作列表框中的选项,由于列表框中的选项是一个集合形式的,列表项的操作都是用Items属性进行的。

    • Items.Add 方法用于向列表框中添加项;
    • Items.Insert 方法用于向列表框中的指定位置添加项;
    • Items.Remove 方法用于移除列表框中的项。

    下面通过一个例子使用列表框控件。

    • 设置控件。

    在这里插入图片描述

                // listBox1
                // 
                this.listBox1.FormattingEnabled = true;
                this.listBox1.ItemHeight = 20;
                this.listBox1.Location = new System.Drawing.Point(241, 145);
                this.listBox1.Name = "listBox1";
                this.listBox1.Size = new System.Drawing.Size(285, 164);
                this.listBox1.TabIndex = 18;
                this.listBox1.Items.AddRange(new object[] {"篮球","排球","游泳" });
                // 
    
    • 设置相应事件。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            // 将文本框中的值添加到列表框中
            private void button1_Click(object sender, EventArgs e)
            {
                // 当文本框中的值不为空时将其添加到列表框中
                if (textBox1.Text != "")
                {
                    listBox1.Items.Add(textBox1.Text);
                }
                else
                {
                    MessageBox.Show("请添加爱好!");
                }
            }
            // 将列表框中的选中项删除
            private void button3_Click(object sender, EventArgs e)
            {
                // 由于列表框控件中允许多选所以需要循环删除所有已选项
                int count = listBox1.SelectedItems.Count;
                List<string> itemValues = new List<string>();
                if (count != 0)
                {
                    for (int i = 0; i < count; i++)
                    {
                        itemValues.Add(listBox1.SelectedItems[i].ToString());
                    }
                    foreach (string item in itemValues)
                    {
                        listBox1.Items.Remove(item);
                    }
                }
                else
                {
                    MessageBox.Show("请选择需要删除的爱好!");
                }
            }
        }
    }
    
    展开全文
  • 5255667.zip,How-can-I-create-a-script-that-run-windows-form-ap.pdf
  • 国际象棋 C#/Windows 窗体中的国际象棋游戏。 类图
  • 本文提供了一个简单的示例,说明如何通过子类化.NET System.Configuration命名空间中的ApplicationSettingsBase类的实例,以编程方式保存应用程序的主窗体和一些相关的子控件设置。
  • C# 做的WINDOWS窗体程序-简易计算器

    热门讨论 2015-01-06 10:38:19
    用C#做的一个简单的实现加减乘除的WINDOWS窗体程序计算器
  • 我的项目有一个带有标题和下面几个导航按钮的主窗体。 在这些区域的下方是一个用于显示与每个导航按钮关联的内容的区域,包含该内容的面板跨越整个底部区域。 我已经在前两个面板中编写了大量代码,但随后...
  • 跨线程访问Windows窗体控件,线程带多参数。 跨线程访问Windows窗体控件,线程带多参数。
  • 精通 C#与.NET4.0 数据库开发 实验报告 实验题目 Windows 窗体程序的开发 专 业 计算机科学与技术 学 生 姓 名 班 级 学 号 教 师 指 导 单 位 日 期 教 师 评 教师签名 年 月 日 语 成 绩 评 定 备 注 一实验目的 1...
  • 本文实例讲述了Windows窗体的.Net框架绘图技术实现方法,非常实用,具体内容如下: 一般来说,当编写一个典型的Windows 窗体程序时,窗体和控件的绘制、效果等操作是不需要特别加以考虑的。这是为什么呢?因为通过...
  • mvp-winforms 清晰的体系结构,使用EF Code First项目将MVP模式实现到Windows窗体应用程序
  • Windows窗体程序设计

    2014-01-22 22:02:50
    关于c++的Windows窗体程序设计编程
  • unity3d 调用 web 窗体windows 窗体 .exe1 cs using UnityEngine;using System.Collections;using System.Diagnostics;public class NewBehaviourScript : MonoBehaviour {// Use this for initializationvoid ...
  • Windows窗体控制程序源码1.0
  • 动画Windows窗体

    2021-04-08 22:01:45
    通过添加动画功能,使Windows窗体控件更动态的组件。
  • 使用C++/CLI和.Net Framework框架类库开发一个具有已经技术含量的Windows窗体应用程序(实现不少于5个菜单项、5个工具栏命令选项及状态栏等Windows界面元素)
  • Windows窗体应用开发

    2011-12-31 20:58:15
    Windows窗体应用开发
  • windows 窗体

    2015-05-11 15:30:11
    donetbar窗体设计,与数据库连接读取数据库的数据 使用list显示
  • 创建Windows窗体应用程序的一般步骤 1.创建Windows窗体项目 2.创建用户界面 3.添加控件 4.创建处理控件事件的方法 5.将控件事件与事件处理方法关联 6. 运行和测试程序 具体步骤如下: ① 创建窗体...

    创建Windows窗体应用程序的一般步骤

    1.创建Windows窗体项目

    2.创建用户界面

    3.添加控件

    4.创建处理控件事件的方法

    5.将控件事件与事件处理方法关联

    6.   运行和测试程序

    具体步骤如下:

     ① 创建窗体(Form),即创建一个界面作为载体用来设计显示页面。

     ② 添加控件:根据应用程序需要,添加各种控件(包括按钮、文本框、菜单等)。

     ③ 属性设置:通过属性设置描述各个控件的外部特征;指定各个控件在窗体中的布局(Layout),使其合理地排列在窗体上。

     ④ 响应事件:定义图形界面的事件处理代码,不同的控件、窗体存在不同的事件,设置各个控件的不同事件的处理过程,实现对指定控件事件的响应,如点击按钮会促发什么样的事件。

    1. 创建新项目

    2. 拖拽使用新控件

    3. 属性打开

    4. 属性修改

    5. 编辑控件代码 

     双击确定按钮,进入代码编辑 

     MessageBox.Show使用详解:MessageBox.Show 参数详解https://blog.csdn.net/qq_45037155/article/details/124011093

     private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show(textBox1.Text + " 登录成功!");
            }

    6. 执行查看效果

    首先 设置为启动项目

    展开全文
  • Visual studio 基于Windows窗体应用(.NET Framework)

    ace64a7dbe7a46aeab2ebc307b50ac96.png

    我们来设计一个简单的窗口 来进行一个单位进制换算

    首先创建一个.NET Framework项目 选择.NET Framework 2.0

    “问题来了为什么要选择2.0,有高版本的为什么不用?”

    选择低版本的是为了提高兼容性 在不同的Windows中可以运用。

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

    新建进入如图界面。

    我们可以通过工具箱 在窗口中添加我们所需要的一些功能。

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

     label:为控件提供运行时的信息或说明性文字(通俗的说就是添加文字)

    texBox:允许用户输入的文本,并提供多行编辑和密码字符掩码功能

    button:用户单击引发事件

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

     点击button的属性:cilck绑定并写入程序

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

     写好程序后 我们Debug一下:

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

     运行成功:一美制加仑大约等于 3.79 公升  在运行窗口中我们输入任意值都会进行转换计算出我们的公升值。

    若需导出窗口:我们选择生成

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAJllZWQ==,size_20,color_FFFFFF,t_70,g_se,x_16

     

     

     

    展开全文
  • C# 使用VS创建Windows窗体应用程序

    千次阅读 2022-04-10 17:56:14
    一. 1.打开VS,点击Windows窗体应用 2. 输入名称 3 点击创建成功

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,710
精华内容 56,684
关键字:

windows窗体

友情链接: lhzn_v1.0.rar