精华内容
下载资源
问答
  • C# winform项目开发规范

    千次阅读 2018-11-30 17:58:48
    虽然用C# winform开发项目有段时间了,但之前没系统学过,也没人指导,平时做项目都是从需求出发,学习对应的知识。老师给的评价是:虽然功能都能实现,但还欠点火候。最近给审计局的学长做个审计管理系统,需求...
    •  前言

            虽然用C# winform开发项目有段时间了,但之前没系统学过,也没人指导,平时做项目都是从需求出发,学习对应的知识。老师给的评价是:虽然功能都能实现,但还欠点火候。最近给审计局的学长做个审计管理系统,需求其实和通常的成绩管理系统很相似,就在网上下载了个成绩管理系统作为参考(网址:https://github.com/soulsjie/StuScoreMa)。这个系统,虽然内容上没什么新意,但是形式上特别规范,让我有种拍案而起的冲动:原来可以这样。做完我的系统后,觉得有几点很值得和刚接触C# winform开发的同学分享分享。

    • 创建文件夹

            根据项目文件的类型创建文件夹,每个文件夹中放入同一类型的文件。添加文件时,右键文件夹,选择添加新项。这样做的好处是为了更方便的找到你想要的文件,小项目可能体现不出来效果,毕竟也没几个文件,但是对一些大的项目开发是必不可少的。而且也提高了代码的可读性,其他人通过看目录,能初步了解系统的结构。

            定义了一个文件夹,相当于定义了一个命名空间。比如我在main.cs代码界面中调用工具类文件夹下的DBliink类,因为不在一个文件夹里,所以要在代码首部添加引用。

    using Audit.工具类;
    • 封装操作类

             C# winform开发是一种事件驱动型模型,所以你在开发时会发现主窗体的代码量会越来越多,因为它是所有事件的起点。代码量一多,就容易混乱,特别是以前我把事件和方法操作混在一起的时候。通过加注释和关键字#region,效果不明显,治标不治本。错的最离谱的一点是, 这样做根本不能体现C#面向对象的优越性,这可能和我习惯了C有关。下面我给出 mysql操作类,帮助大家了解C#面向对象的精彩。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using MySql.Data.MySqlClient;
    using System.Windows.Forms;   //引入Messagebox
    using Audit.数据实体类;
    
    namespace Audit.工具类
    {
        //将数据库连接功能,单独定义为一个类来执行
        class DBlink
        {
            MySqlConnection sqlCnn = new MySqlConnection(); //创建数据库连接对象
            MySqlCommand sqlCmd = new MySqlCommand();       //创建执行sql的对象
         
            //创建数据连接
            public Boolean DBcon()
            {
                Boolean tag = false;
                sqlCnn.ConnectionString = "server = '127.0.0.1'; uid = 'root'; pwd = 'root'; database = 'audit_project';";//连接字符串
                sqlCmd.Connection = sqlCnn;
                try
                {
                    sqlCnn.Open();
                    tag = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "error");
                }
                return tag;
            }
    
            //关闭数据库连接
            public void DBclose()
            {
                sqlCnn.Close();
                //Console.WriteLine("数据库连接关闭");
                //Console.ReadKey();
            }
    
           
            //执行查询的sql
            public Boolean search(String str)
            {
                Boolean tag = false;
                sqlCmd.CommandText = str;
                MySqlDataReader rec = sqlCmd.ExecuteReader();//创建结果集
                if (rec.HasRows)
                {
                    tag  = true;     // 查询到数据
                }
                return tag;
            }
    
            //执行增删改的sql
            public Boolean UpdataDeletAdd(string str)
            {
                sqlCmd.CommandText = str;
                return sqlCmd.ExecuteNonQuery() > 0;
            }
    
            //定义自定义函数方法,在dataGridView中显示单位的审计情况       
            public void Get_dataGridView1_data(string str)
            {
                sqlCmd.CommandText = str;
                MySqlDataReader rec = sqlCmd.ExecuteReader();
                //初始化数据;
                uint_data.id.Clear();
                uint_data.unit.Clear();
                uint_data.tf_audit.Clear();
                while (rec.Read())
                {
                    uint_data.id.Add(rec.GetString(0));
                    uint_data.unit.Add(rec.GetString(1));
                    uint_data.tf_audit.Add(rec.GetString(2));
                }
            } 
    }  

            在窗体中,通过声明类的对象,来调用类中的方法,将事件和操作完全分开,主窗体中只有各种事件。

    if (db.DBcon())   //连接数据库成功
    {
          if (!db.UpdataDeletAdd(str)) 
          {
                DialogResult dr = MessageBox.Show("删除失败", "标题", MessageBoxButtons.OK, MessageBoxIcon.Question);
          }
    }
    db.DBclose();  //避免多线程操作数据库,影响系统报错,先关闭数据连接
    • 封装数据类

            有一些重要的变量会涉及到好几个窗体,比如成绩管理系统中用户的登录名。我以前的做法是,在主窗体中定义该变量为静态变量,然后在子窗体中通过主窗体名直接点出来,或者是通过构造函数传递参数。其实这些方法都是可行的,完全不会影响编译,但是的确不过规范,会让主窗体中定义的变量过多,容易混淆。下面以用户登录信息的数据实体为例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections; 
    
    namespace dataADUstudy.数据实体类
    {
        class LoginInfo
        {
            //保存用户登录信息的数据实体
            public static string username;  //用户名
            public static string password;  //密码
            public static int tag;          //审核标记
            public static string sf;        //身份标记
            public static string number;    //学号--学生信息表中的主键
            public static string banji;     //班级
            public static Boolean isadmin=false;      //管理员标记
    
            //创建list存储查询的用户信息结果集(个人特别喜欢用动态数据,操作非常方便)
            public static ArrayList idList = new ArrayList();        //用户id
            public static ArrayList usernameList = new ArrayList();  //用户名
            public static ArrayList passwordList = new ArrayList();  //登录密码
            public static ArrayList SfList = new ArrayList();        //用户身份
            public static ArrayList numberList = new ArrayList();    //用户编号
            public static ArrayList banjiList = new ArrayList();     //所属班级
        }
    }
    
    // 通过类名调用数据
    // LoginInfo.username = rec.GetString(1);  //将用户名存放到数据实体类
    • 总结

             说了这么多,其实就是为了一个目的,就是为了减少主窗体的代码量,只留下事件。这几条规范也只是我的有感而发吧,这个命题还是很大的,欢迎大神指点。另外,我的审计管理系统也已经上传了,欢迎下载。https://download.csdn.net/download/langwen2048/10817236

    展开全文
  • WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端开发技术,一般使用 C# 编程。...Gitee 中也不少 WinForm 的簇拥,以下这几个优质的 WinForm 项目希望能给大家带来更新的视角。 1.HZHC...

    WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端开发技术,一般使用 C# 编程。随着时间的推移,WinForm 也算是能够坚持下来最久的技术之一了,它的昔日辉煌和现今的依旧活跃,导致了它依旧拥有者很庞大的用户群体。Gitee 中也有不少 WinForm 的簇拥,以下这几个优质的 WinForm 项目希望能给大家带来更新的视角。

    1.HZHControls控件库

    项目简介:C#的winform自定义控件,对触屏具有更好的操作支持,项目是基于framework4.0,完全原生控件开发,没有使用任何第三方控件,你可以放心的用在你的项目中。

    项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control

    2.weaving-socket

    项目简介:U3D、物联网、web通用。网关 socket 通讯,支持winform、uwp、core、u3d直接引用开发。

    项目地址:https://gitee.com/dreamsfly900/universal-Data-Communication-System-for-windows

    3.CheckUpdate.Net

    项目简介:WinForm开发的检查更新程序。可用于WinForm/WPF,主要功能包括更新文件、更新程序自身、下载安装包等。

    项目地址:https://gitee.com/xcong/CheckUpdate.Net

    4.Chess

    项目简介:WinForm实现的五子棋程序,AI算法为全局搜索+积分规则。

    项目地址:https://gitee.com/salamander-mh/Chess

    5.EASkins

    项目简介:.NET WinForm 和 WPF 的UI界面库,收集整合了多个优秀库及示例。

    项目地址:https://gitee.com/airscrat/EASkins

     

    想要了解更多 WinForm 项目,点这里就对了

    展开全文
  • 时候正在做的项目需要以前项目的界面(Form,UserControl),重新写又觉得麻烦,只好从原来项目复制文件过来,然后添加到这个项目,添加完了之后,打开设计器,发现界面成了空白,什么没有,CS代码文件与设计器...

    一、问题背景

    有时候正在做的项目需要以前项目的界面(Form,UserControl),重新写又觉得麻烦,只好从原来项目复制文件过来,然后添加到这个项目,添加完了之后,打开设计器,发现界面成了空白,什么也没有,CS代码文件与设计器代码文件也是分离的,如图。
    在这里插入图片描述

    二、解决方案

    新建一个winform项目test,建好以后在解决方案资源管理器中右击form1.cs,点击删除。此时项目文件夹中的.cs和.Designers.cs后缀文件将自动删除。
    在这里插入图片描述
    2.将原来项目文件夹中,除了app.config、Program.cs、BasicDemo.csproj、bin文件夹、obj文件夹和Properties文件夹外,其余文件均复制到新项目文件夹中。
    在这里插入图片描述
    3.在新项目解决方案资源管理器中右击test项目–添加–现有项,选择BasicDemo.cs,其余文件也会自动添加到项目中。

    4.修改BasisDemo.cs和BascDemo.designer.cs代码中的命名空间为新项目的命令空间。
    在这里插入图片描述
    5.如果原项目中引用了动态链接库,复制到新项目中时要重新引用一次。

    三、参考回答

    <WinForm>复制别的项目界面文件到项目中打开设计器空白问题

    展开全文
  • 开发环境:Win7 64Bit...注:项目是一个实体,可以是一个执行文件,一个程序集,解决方案就是若干个项目的集合,如果只想做一个简单的工具,只有一个项目,可以把为解决方案创建目录去掉,可以省掉一集目录;本例...

    开发环境:Win7 64Bit简体中文版,VS2012简体中文版。

    主要内容:

    • 登录页面与主页面
    • 背景资源的使用
    • 控件程序集
    • 制作安装包

    打开VS2012,选择文件|新建|项目,弹出新建项目对话框:

    注:项目是一个实体,可以是一个执行文件,一个程序集,解决方案就是若干个项目的集合,如果只想做一个简单的工具,只有一个项目,可以把为解决方案创建目录去掉,可以省掉一集目录;本例子的解决方案中有一个执行程序,两个程序集,所以要选上,项目名称与解决方案名称也可以不一样。

    点击确定之后,项目就生成了。

    生成项目后,立即生成并执行一下,这是一个非常重要的习惯,在重要的节点编译执行一下,可以避免很多编译问题。

    观察一下新建的项目,程序入口文件是:Program.cs,唯一的窗体类是Form1,对应两个文件:Form1.cs,Form1.Designer.cs,把Form1修改为Logon。

    解决方案资源管理器中,选中Form1.cs,右键菜单中选择重命名,名字变为可编辑状态,输入Logon,弹出对话框,选择是,生成并执行一下,发现窗口的标题依然是Form1。

    双击解决方案资源管理器中的Logon.cs,打开Logon.cs的设计界面,右击|属性,打开属性页面,找到Text项,把这里的“Form1”修改为“登录”,再编译执行一下。

    修改名字后,可以看到项目下面多了一个Logon.resx文件,这是Logon窗体对应的资源,将窗体的资源和窗体放在一起可以方便以后移植。(这个resx文件就是一个xml文件)

    添加背景:在Logon设计界面,选中窗体,右击|属性,在外观里找到BackgroundImage,点击后面的...的按钮,弹出一个资源上下文对话框,本地资源即对应Logon.resx,项目资源文件对应的是Properties/Resources.resx,这里选择放在本地资源中,导入文件之后,可以看到Logon.resx明显变大了,打开看一下,可以看到整个图片以base64的方式插入到文件中了。编译之后,图片被编译进直行程序之中,可以脱离图片文件。

    生成并执行,调整登录窗口的大小,可以看到背景是以平铺的方式显示的,有必要固定登录窗口的大小,在窗口属性里找到“FormBorderStyle”,改成FixedSingle(其他值也行)。

    双击解决方案资源管理器中的Logon.resx,打开资源文件,可以看到其中有一个对象“$this.BackgroundImage”。

    从工具箱中拖入一个Button到对话框中,在属性窗口设置Text,即Button上显示的名称,设置(Name)为btn_ok,即源代码中的对象名。

    添加Click事件响应:在属性页面中,点击按钮,切换到事件页面,找到Click,双击,就自动生成了名为btn_ok_Click的响应,在Form.cs中可以看到新生成的btn_ok_Click方法。

    添加主窗口:右击项目|添加|新建项|Windows窗体,输入MainFrame,点击添加。

    由Log窗口切换到主窗口:

            private void btn_ok_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                Logon logon = new Logon();
                if (logon.ShowDialog() != DialogResult.OK) {
                    return;
                }
                Application.Run(new MainFrame());
            }
        }

    这样,点击登录窗口中的按钮,就能关闭登录窗口,并打开主窗口。在登录窗口中打开主窗口,然后把自己隐藏的方法是不好的。

    添加控件程序集:右击解决方案|添加|新建项目|Windows窗体控件库。窗体控件库可以看做是一个窗体的一部分,做好之后可以放到其他窗体中。

    在主窗体中加入控件:在工具箱中右击|添加选项卡,建立一个名为“我的控件”的选项卡,右击|选择项,里面看不到刚建的控件,点浏览,找到控件的dll。之后就能把控件加入到主窗体中了。

    制作安装包:如果只看到启用的那一项,就点击一下,进入到注册下载的网页,随便填了下载一下,并没有多麻烦。

    这是一个限制版的,很多功能不能用,打开Project Assistant页面(新建项目后会自动打开)

    Application Files:选择Add Project Outputs,选择两个项目的主输出,也就是exe与dll。

    在Setup项目上点击生成,在目录“Setup\Express\SingleImage\DiskImages\DISK1”下有一个Setup文件,安装好之后,可以在“C:\Program Files (x86)\ZYCGuide”下面看到安装的文件。

    通过开始菜单也可以看到刚刚做的程序。

    感觉这个挺垃圾的,我是希望大家都开发绿色版的软件。

    转载于:https://www.cnblogs.com/zhuyingchun/p/6536976.html

    展开全文
  • 因为在解决方案里没有项目文件上右键菜单里没有直接复制的选项。 第一步: 打开项目所在的文件夹, 直接在项目文件夹复制一个副本出来。 改名为自己的项目文件,这里为DEMO4 第二步: 进入DEMO4 文件夹...
  • 最近学生们学习了2个月的C#和WINFORM没有学习数据库。故设计了这样的一个小游戏,基本覆盖了C#语言常用的语法,已经面向对象的基本思想。本实训课程分为8个阶段来实践,效果非常 此游戏开发为在课堂上即兴编写...
  • Winform项目总结

    2010-09-14 15:52:19
    经过一星期的紧张编码,项目总算是完成了,虽然结果不令人满意,但也算是努力了,自己也算是尽力了吧。下面先说一下大体的流程吧。 第一天,我们先进行了需求分析,从网上下了许多仓库管理系统,并且大致了解了一下...
  • Winform技术要点及案例项目开发小结

    千次阅读 2017-01-17 15:18:35
    由于长时期未操作WINFORM了,有点手生,尤其是对于EXCEL表格的操作,在没有第三方控件辅助的基础上,更感到了吃力。 但所幸功夫不负有心人, 终于让我找到了相关的解决方案。 现总结一下此次项目开发的经验教训,...
  • 新建一个Winform项目,会看到项目中这样两个文件:Properties\Settings.settings(XML文件,还有一个配套的自动生成的Settings.Designer.cs),App.config。 简而言之,Settings对应App.config中的这两个Section...
  • 这是CIM项目系列的最后一篇文章,因为实现这个功能之后整个项目基本上就算完成了。 首先,我们需要在Chat聊天窗体中进行用户初始化。 我们双击会话或者好友列表中的panel的时候,弹出Chat聊天窗体,同时利用控件的...
  • 原标题:winform项目——仿QQ即时通讯程序12:服务端程序补充及优化上一篇文章大概完成了服务端程序,今天继续做项目的时候发现还有一些功能没有做,还有几处地方不够完善。不做好就会影响客户端程序的编写,因此,...
  • 基于winform仿QQ软件

    2014-04-09 17:27:43
    这是我写的第一个基于winform的仿QQ软件,由于学习winform时间不长,也...有什么问题可以和我交流,共同促进。 只需将数据库文件附加到SQL里面,更改软件里面的连接数据库的字符串即可.........主要涉及SQl数据库.....
  • 时候正在做的项目需要以前项目的界面(Form,UserControl),重新写又觉得麻烦,只好从原来项目复制文件过来,然后添加到这个项目,添加完了之后,打开设计器,发现界面成了空白,什么没有,CS代码文件与设计器...
  • 急急急,哪位大神知道啊,我用的是发布,发布出来的exe只能在自己电脑使用,在别的电脑就使用不...是什么原因啊,用InstallShield2015LimitedEdition这个打包,但是他最后一步没有编译程序的按钮,同样这是什么原因啊,
  • VisualStudio2017,C#winform项目连接Mysql数据库

    千次阅读 多人点赞 2019-05-07 15:29:13
    首先我们创建一个简单的C#winform项目,.net版本我们选择4.6.1 然后在设计页面上添加控件bottom和dataGridView 为了能连接mysql需要引入mysql.data的dll,我们右键项目选择管理NuGet程序包,并搜索MySql找到...
  • 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就了。 其实也许我们...
  • 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就了。 其实也许我们...
  • WPF和WinForm技术有什么区别?哪个更加有前景?

    万次阅读 多人点赞 2019-03-19 22:12:03
    另一个是全新的dx渲染绘制的界面,也脱离了对传统windows控件的依赖,没有历史包袱,理论上可以展现更炫酷的界面。对初级开发人员来说,没太大区别,类似的基本设计器是他们设计界面的主要手段,一样给事件编写代码...
  • 之前 Gitee 为大家介绍过几款优质的 Winform 项目,发现Winform在大家心中的地位还是挺高的,那么今天就再给各位分享一款新鲜出炉的 Winform UI库——SunnyUI,一起跟 Gitee 往下看吧。 项目名称:SunnyUI 项目...
  • 在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计...本篇随笔是基于前面几篇的基础上,在Winform项目上进一步改造为实际项目的场景,把我原来基...
  • winform项目的app.config和exe.config文件

    千次阅读 2017-08-07 14:07:32
    winform项目创建后默认会一个App.config的配置文件,最好不要修改这个文件的内容,编译你的解决方案,会在输出目录中发现生成了一个YourSoft.exe.config(假设你的应用程序名为YourSoft.exe)。下面几点需要说明...
  • 项目介绍及演示 基于开发: Visual Studio 2019 数据库:SQL Server2019 美化插件:GUNA GUNA官网 登录注册 登录注册肯定是一个项目必不可少的功能点,本图演示实现了管理员注册和用户注册,及长按密码的小图标可以...
  • 在C# Winform项目,在form1窗体一个button按钮。 目前已经可以在button的点击事件中,通过以下代码实现将“CBOX央视影音”在线视频播放的App客户端打开。 代码如下: Process proc = new Process(); proc.StartInfo....
  • winform项目打包安装一

    2012-11-20 20:35:58
    辛辛苦苦用winform写了个计算器(可以在上面加上自己欠揍的大头贴),一定很想和别人分享,特别是我们那些不懂程序的童鞋,炫耀是合法滴,得瑟是必须滴,但是马上就会发现你悲催了,你的程序怎么给人家呢? 小明说了...
  • 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就了。 其实也许...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,517
精华内容 7,006
关键字:

有没有好的winform项目

友情链接: package.rar