提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
微软的.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
学无止境,继续加油!
|