0
点赞
收藏
分享

微信扫一扫

【C#Winform开发的一些代码复用】

水沐由之 2022-04-06 阅读 68
c#后端

C#Winform开发使用到的技巧介绍(1)


前言

提示:这里可以添加本文要记录的大概内容:

微软的.NET框架下的Winform开发,相较于Java的Swing框架,整体上上手对于新手来说更容易些,且微软的一些集成对于新手来更友好,在此基础上开发Windows下的桌面应用程序也比较容易。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Winform是什么?

Winform是微软VS.NET下带的一个框架,主要使用C#语言进行开发,项目创建非常简单,当然也都是VS集成的好

在这里插入图片描述
这里选择.NET framework版本,没有Winform版本的会有不小的区别,如果初始安装没有这个.NET framework项目的话,说明没有添加到VS里面,在初始界面(installer)可以添加

具体是哪个我也记不清了,可以添加试试看,在是一篇博客看到的,目前找不到了,下次有机会再实验实验

在这里插入图片描述在这里插入图片描述
推荐项目放在一个固定目录下,方便后续进行查找
在这里插入图片描述

创建了之后,会有工具箱,解决方案,属性窗口之类的选项卡
在这里插入图片描述

初始布局是这样的,可以调整大小,工具箱通过点击小指针(那个向下的箭头)来固定
在这里插入图片描述

要是不喜欢或者找不到了,可以直接点击重置选项卡布局,都比较简单
在这里插入图片描述

VS自带了一些比较常用的组件,一般用于搭建界面是比较好用的,可以自己体验体验;这里推荐明日科技的这个《C#从入门到精通(第4版)》,这本书对于Win form的介绍还是蛮详细的,很好的一本书,我也是看这个学会了许多;当然,本站需要一些条件才能查看,推荐去”鸠摩搜书“去看看,可以下载,现在好像都找不到了,可以去网上找找资源

这里给出第三版的,其实大致都一样,基本内容没啥问题的,章节也一致,这本的清晰度还不错
链接:https://pan.baidu.com/s/18m5L6mppAA-fa-Igeu4ZMw
提取码:0925

在这里插入图片描述

这个菜单组件用的还是很多的,可以简单了解了解,方便搭建界面
在这里插入图片描述

这个数据DataGridview和Chart数据控件用得很多,容器可以更方便的进行布局
在这里插入图片描述

二、这里给出一些开发用到的知识

1、数据库备份与导入:

导入的路径需要再尝试
    backup database University_manage To disk= 'd:\one.bak'

    RESTORE  DATABASE University_manage FROM DISK='D:\one.bak' WITH  NORECOVERY

    为了让导入之后数据库能用:restore database University_manage with recovery

2、数据库备份与导入语句:

public static readonly SqlConnection conn_restore = new SqlConnection
        {
            ConnectionString = "Data Source=.;Initial Catalog=master;Integrated Security=True"
        };

        public static bool Judge_is_db_exist(string db_name)
        {
            string sql = "select count(*) from sys.databases where name = '" + db_name + "'";
            SqlCommand command = new SqlCommand(sql, conn_restore);
            conn_restore.Open();
            int n = int.Parse(command.ExecuteScalar().ToString());
            conn_restore.Close();
            if (n > 0)
                return true;
            return false;
        }

        public static string Database_restore()
        {
            string return_msg;
            if (Judge_is_db_exist("University_manage"))
                return_msg = "该数据已存在,请删除后再导入!";
            else if (!File.Exists("D:\\University_manage.bak"))
                return_msg = "在指定路径下未找到对应备份文件,请将文件放在指定路径下!";
            else
            {
                string sql = "RESTORE DATABASE University_manage FROM DISK='D:\\University_manage.bak' WITH  NORECOVERY";
                Execute_sql_command(sql);
                sql = "restore database University_manage with recovery";
                Execute_sql_command(sql);
                return_msg = "数据库导入成功!";
            }
            return return_msg;
        }

        public static string Database_back()
        {
            string return_msg;
            if (File.Exists("D:\\University_manage.bak"))
                return_msg = "数据库备份已存在,请删除后再备份!";
            else if (!Judge_is_db_exist("University_manage"))
                return_msg = "数据库系统中暂未导入该数据库,请先导入后再备份!";
            else
            {
                string sql = "backup database University_manage To disk = 'D:\\University_manage.bak'";
                Execute_sql_command(sql);
                return_msg = "数据库备份成功!";
            }
            return return_msg;
        }

        public static void Execute_sql_command(string sql)
        {
            SqlCommand command = new SqlCommand(sql, conn_restore);
            conn_restore.Open();
            command.ExecuteReader();
            conn_restore.Close();
        }

3、填充DataGridView控件代码:

public static void Select_like_logs(string table_name, string field_name, string search_input, DataGridView dataGridView)
        {
            string sql = "select * from " + table_name + " where " + field_name + " like '%" + search_input + "%'";
            conn.Open();
            SqlDataAdapter sqlData = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            sqlData.Fill(ds);
            dataGridView.DataSource = ds.Tables[0];
            conn.Close();
        }

4、更改网页版表格控件GridView的内容代码:

protected void Button_commodity_name_search_Click(object sender, EventArgs e)
        {
            string commodity_name = TextBox_commodity_search.Text;
            SqlDataSource_commodity.SelectCommand = Sql_operation.Select_like_logs("goods_information", "commodity_name", commodity_name, GridView_commodity);
        }

5、SQL语句编写方式:
测试能否简单通过”+”简单的连接:string sql = “delete from goods_information where commodity_name = '” + commodity_name + “'”;

6、将Panel作为父窗体

public static void Set_parent_panel(Panel panel, Form form)
        {
            supplier_analyse.MdiParent = form;
            supplier_analyse.Parent = panel;
        }

7、画图的chart控件的数据填充

public static readonly List<string> x_value = new List<string>();
        public static readonly List<double> y_value = new List<double>();

        public static void Add_container(string table_name, string field_name)
        {
            x_value.Clear();
            y_value.Clear();
            string sql = "select COUNT(*) as y_number, " + field_name + " from " + table_name + " group by " + field_name + " order by " + field_name;
            SqlCommand command = new SqlCommand(sql, conn);
            conn.Open();
            SqlDataReader Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                x_value.Add(Reader[field_name].ToString());
                y_value.Add(int.Parse(Reader["y_number"].ToString()));
            }
            conn.Close();
        }

        chart_user.Series["Series_user"].Points.DataBindXY(Graphics_draw.x_value, Graphics_draw.y_value);

8、Comobox控件的数据填充

public static void Combobox_add(string table_name, string field_name, ComboBox comboBox)
        {
            bool Is_add = false;
            string sql = "select distinct " + field_name + " from " + table_name + " order by " + field_name;
            SqlCommand command = new SqlCommand(sql, conn);
            conn.Open();
            SqlDataReader Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                comboBox.Items.Add(Reader[field_name].ToString());
                Is_add = true;
            }
            conn.Close();
            if(Is_add)
                comboBox.SelectedIndex = 0;
        }

9、目前对于C#和SQL Server数据库的交互语句来讲,字符串采用’”+str+”’的方式进行插入(即单引号加双引号),但对于传入参数为具体的一个字符串时,直接连接才可,以下为两个例子
string sql = “select supplier_logs_id from goods where commodity_id = '” + commodity_id + “'”;

string sql = "select * from " + table_name;
如若写的不对,则会报错,记住这样的形式,修改bug会较为容易

10、ACCESS数据库连接语句

OleDbConnection oleDb = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\VS工作空间\\Supermarket.accdb");
        string sql = "select * from UserInfor";
        OleDbCommand command = new OleDbCommand(sql, oleDb);
        oleDb.Open();
        OleDbDataReader Reader = command.ExecuteReader();
        while (Reader.Read())
        {
        }
        oleDb.Close();

11、C#Tostring保留两位小数
string number = numericUpDownNumber.Value.ToString(“f2”);


总结

在这里也对这次的文章进行总结,C#入门容易但学会简单的一些小程序,并不应该停在这里,需要学习高级教程,同样需要学习Java,C#和Java很类似,且Java的场景更广,学习Java可能在做一些小项目的时候会比C#复杂一些,一些配置啊,一些交互之类的,但这都是过程,C#也有很多需要学习,不应该停止,这里给出一个小项目的参考,是对上面用到的技术进行一个总结

链接:https://pan.baidu.com/s/1DyAnTUpmNdHu0l64DzUtOQ
提取码:0925

学无止境,继续加油!

举报

相关推荐

0 条评论