首页 > 其他分享 >WinForm项目结构详解及实例代码

WinForm项目结构详解及实例代码

时间:2024-09-12 11:53:22浏览次数:3  
标签:包含 实例 详解 窗体 cs LoginForm MainForm WinForm

WinForm(Windows Forms)是基于.NET Framework平台的客户端(PC软件)开发技术,它允许开发者使用C#等语言创建丰富的图形用户界面(GUI)应用程序。本文将详细介绍WinForm项目的基本结构,并提供一个简单的登录系统实例代码,帮助读者更好地理解和应用WinForm技术。

一、WinForm项目结构

1. 总体结构

一个典型的WinForm项目结构通常包含以下几个主要部分:

  • Properties:包含项目的属性配置文件,如AssemblyInfo.cs、Settings.settings等。
  • References:包含项目所引用的程序集和组件。
  • App.config:当前项目的配置文件,用于存储应用程序设置。
  • Forms:包含所有的窗体(Form)或对话框(Dialog)类文件。每个窗体由Form1.cs、Form1.Designer.cs和Form1.resx三个文件组成。
  • Form1.cs:包含窗体的业务逻辑代码。
  • Form1.Designer.cs:由设计器自动生成,包含窗体的界面布局代码,一般不建议手动修改。
  • Form1.resx:包含窗体的资源文件,如图标、图片等。
  • UserControls:包含所有的用户控件(UserControl),用于封装常用的界面元素,以便在多个窗体中复用。
  • Resources:包含所有的应用程序资源,如图标、位图、声音等。
  • Helpers:包含所有的辅助类,如配置类、工具类、日志类等,用于提供公共的服务和功能。
  • Models:包含所有的实体类和数据访问对象(DAO),用于表示业务数据和操作数据库。
  • Services:包含所有的服务类,用于提供业务逻辑的实现和数据处理的封装。
  • Program.cs:程序的入口文件,包含Main方法,用于启动应用程序。

2. 文件示例

以下是一个简单的WinForm登录系统的文件结构示例:

- LoginSystem
  - Properties
    - AssemblyInfo.cs
    - Settings.settings
  - References
  - Forms
    - LoginForm.cs
    - LoginForm.Designer.cs
    - LoginForm.resx
    - MainForm.cs
    - MainForm.Designer.cs
    - MainForm.resx
  - UserControls
  - Resources
  - Helpers
  - Models
  - Services
  - App.config
  - Program.cs

二、实例代码:登录系统

1. LoginForm.cs(登录窗体逻辑)

using System;
using System.Windows.Forms;

namespace LoginSystem
{
    public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            string username = txtUsername.Text;
            string password = txtPassword.Text;

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                MessageBox.Show("用户名和密码不能为空!");
                return;
            }

            if (CheckCredentials(username, password))
            {
                MessageBox.Show("登录成功!");
                MainForm mainForm = new MainForm();
                mainForm.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("用户名或密码错误!");
            }
        }

        private bool CheckCredentials(string username, string password)
        {
            // 这里只是示例,实际开发中应与数据库进行验证
            return username == "admin" && password == "123456";
        }
    }
}

2. MainForm.cs(主窗体逻辑)

using System.Windows.Forms;

namespace LoginSystem
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        // 主窗体关闭时退出程序
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }
    }
}

3. Program.cs(程序入口)

using System;
using System.Windows.Forms;

namespace LoginSystem
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new LoginForm());
        }
    }
}

三、总结

WinForm项目结构清晰,便于维护和扩展。通过合理的文件组织和代码设计,可以构建出功能丰富、界面友好的桌面应用程序。本文通过一个简单的登录系统实例,展示了WinForm项目的基本结构和关键代码实现,希望能够帮助读者更好地理解和应用WinForm技术。

标签:包含,实例,详解,窗体,cs,LoginForm,MainForm,WinForm
From: https://blog.51cto.com/u_9849794/11990467

相关文章

  • 828华为云征文 | 云服务器Flexus X实例,镜像切换与服务器压力测试
    828华为云征文|云服务器FlexusX实例,镜像切换与服务器压力测试云服务器FlexusX压力测试1、购买华为云FlexusX实例Flexus云服务器X实例-华为云(huaweicloud.com)2、xshell远程连接服务器3、安装压力测试工具sysbench使用sysbench进行CPU、内存、I/O压力......
  • 鸿蒙HarmonyOS装饰器详解
    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)......
  • .NET 多版本 WinForm 开源控件库 SunnyUI
    前言给大家推荐一款开源的Winform控件库,可以帮助我们开发更加美观、漂亮的WinForm界面。项目介绍SunnyUI.NET是一个基于.NETFramework4.0+、.NET6、.NET7和.NET8的WinForm开源控件库,同时也提供了工具类库、扩展类库和多页面开发框架。基于.NETFramework4.0......
  • DevExpress WinForms中文教程:Data Grid - 如何自定义行和单元格的样式?
    在本教程中您将学习如何使用事件更改数据单元格样式,您将从要给显示任务数据的网格开始,并且没有应用条件格式。通过处理GridView.RowStyle事件,您将对Priority字段值为High的行应用不同的背景颜色。然后如果Status设置为New,您将使用GridView.RowCellStyle事件来突出显示这些行中的St......
  • MARK点、定位孔、拼板邮票孔详解
    MARK点、定位孔、拼板邮票孔详解在PCB设计和制造中,PCB中的MARK点、定位孔、拼板邮票孔各自扮演着重要的角色。MARK点MARK点也称为基准点或光学定位点,主要用于SMT(表面贴装技术)和AOI(自动光学检测)等自动化机械的定位参考。MARK点帮助自动化设备准确识别PCB上的位置,以确保元件的精......
  • PPT中的图形与图片:插入、调整与格式设置技术详解
    目录引言一、图形与图片的插入1.插入图形2.插入图片二、图形与图片的调整1.调整大小与位置2.裁剪与旋转3.图形与图片的合并与组合三、图片格式与布局设置1.图片格式设置2.图片布局设置示例案例:制作产品展示PPT四、结论引言在现代商务、教育和学术交流......
  • TreeMap源码详解—彻底搞懂红黑树的平衡操作
    介绍TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。JavaTreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(naturalordering),也可以通......
  • 【网络安全】基础知识详解(非常详细)零基础入门到精通
    一、什么是网络安全?百度上对“网络安全”是这么介绍的:“网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行,网络服务不中断。”嗯…是不是感觉有点抽象。那么我们再换一种表述:网络安......
  • TreeMap源码详解—彻底搞懂红黑树的平衡操作
    介绍TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。JavaTreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(naturalordering),也可以......
  • nnunetv2系列:2D实例分割数据集转换
    nnunetv2系列:2D实例分割数据集转换2D实例分割数据集转换这里主要参考官方源文件nnUNet/nnunetv2/dataset_conversion/Dataset120_RoadSegmentation.py,注释了一些不必要的操作。数据集下载链接:massachusetts-roads-dataset重要提示:nnU-Net只能用于使用无损(或无)压缩......