桌面程序开发入门(WinForm with C#)
2020-12-06 21:48
标签:winform style blog class code tar 1、使用Visual Studio 2013创建新项目 2、创建一个主窗体和4个子窗体 3、创建一个数据库、一个表、一个存储过程 4、在配置文件里添加数据库连接字符串 5、真正的编码工作。 第一步:创建新项目,一张图片抵一万字!看图说话,呵呵。。 第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、formXMLRead.cs。 三、创建一个数据库、一个表、一个存储过程。打开MS SQL Server Management
Studio执行下面的全部语句。 四、在程序配置文件中添加数据库连接字符串,这里是Windows集成,所以没有看到用户名和密码的属性。添加完后,在代码里就可以通过TestDBConnectionString这个字符串连接数据库了!
五、开始设计窗体和写代码(这些步骤比较繁琐,所以再细分几个步骤,这样比较清晰) 5.1)设计主窗体
1.在创建新项目的时候,系统会默认创建一个名为Form1.cs的主窗体,现在把它更名为FormMain.cs
3.选中主窗体,在属性窗口修改IsMdiContainer为True,这样就把这个普通的窗体变成了父窗体。如图: 到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图: 打开formCommandProc设计模式界面,安照下表属性添加相关控件: 按钮单击事件处理程序btnGet_Click:我把整个文件的代码都放上来了,重点是按钮点击事件! 现在试运行一下程序,应该可以从数据库里读取数据了! 明天再写吧。。 桌面程序开发入门(WinForm with C#),搜素材,soscw.com 桌面程序开发入门(WinForm with C#) 标签:winform style blog class code tar 原文地址:http://www.cnblogs.com/wanghaibin/p/3708306.html
1 CREATE DATABASE TestDB
2 GO
3 USE TestDB
4 GO
5 CREATE TABLE Student
6 (
7 SID INT IDENTITY(1, 1)
8 NOT NULL ,
9 SName NVARCHAR(50) NOT NULL ,
10 Sex NVARCHAR(2) NOT NULL ,
11 Area NVARCHAR(20) NOT NULL ,
12 Email NVARCHAR(50) NOT NULL
13 )
14 ON [PRIMARY]
15 GO
16 INSERT INTO dbo.Student
17 ( SName, Sex, Area, Email )
18 VALUES ( N‘风花雪月‘, N‘男‘, N‘北京‘, N‘abc@qq.com‘ ),
19 ( N‘泡椒田鸡‘, N‘女‘, N‘上海‘, N‘abcd@qq.com‘ ),
20 ( N‘红灯酒绿‘, N‘男‘, N‘天津‘, N‘abc@qq.com‘ );
21 GO
22 CREATE PROCEDURE getStudents @p_SID INT
23 AS
24 BEGIN
25 SET NOCOUNT ON;
26 IF NOT EXISTS ( SELECT SID
27 FROM dbo.Student
28 WHERE SID = @p_SID )
29 PRINT ‘The student does not exists.‘
30 ELSE
31 SELECT SID ,
32 SName ,
33 Sex ,
34 Area ,
35 Email
36 FROM dbo.Student
37 WHERE SID = @p_SID
38 END
39 GO
40 --测试--
41 --EXEC dbo.getStudents @p_SID = 2 -- int
42 -->2 泡椒田鸡 女 上海 abcd@qq.com
2.在工具栏拖动MenuStrip控件到主窗体,主菜单横向有3项,分别是:存储过程、XML、退出。存储过程包括:使用Command 和
使用DataAdapter; XML包括:创建XML和读取XML; 具体设置参照下表:
(Name)属性
Text属性
单击事件处理程序
procedureToolStripMenuItem
存储过程
无
useCommandToolStripMenuItem
使用Command
useCommandToolStripMenuItem_Click
useDataAdapterToolStripMenuItem
使用DataAdapter
useDataAdapterToolStripMenuItem_Click
xmlToolStripMenuItem
XML
无
createXMLToolStripMenuItem
创建XML
createXMLToolStripMenuItem_Click
readXMLToolStripMenuItem
读取XML
readXMLToolStripMenuItem_Click
exitToolStripMenuItem
退出
exitToolStripMenuItem_Click
4.添加4个事件的处理程序和一个退出程序事件,程序的功能是实例化4个窗体,并指定自己的父窗体,代码没什么可讲的,都一个德行。 1 private void useCommandToolStripMenuItem_Click(object sender, EventArgs e)
2 {
3 formCommandProc form = new formCommandProc();
4 form.MdiParent = this;
5 form.Show();
6 }
7
8 private void useDataAdapterToolStripMenuItem_Click(object sender, EventArgs e)
9 {
10 formDataAdapterProc form = new formDataAdapterProc();
11 form.MdiParent = this;
12 form.Show();
13 }
14
15 private void createXMLToolStripMenuItem_Click(object sender, EventArgs e)
16 {
17 formXMLCreate form = new formXMLCreate();
18 form.MdiParent = this;
19 form.Show();
20 }
21
22 private void readXMLToolStripMenuItem_Click(object sender, EventArgs e)
23 {
24 formXMLRead form = new formXMLRead();
25 form.MdiParent = this;
26 form.Show();
27 }
28
29 private void exitToolStripMenuItem_Click(object sender, EventArgs e)
30 {
31 Application.Exit();
32 }
5.接下来就是要设计子窗体的样式和功能了。
(Name)属性
Text属性
控件类型
单击事件
formCommandProc
使用Command对象执行存储过程
System.Windows.Forms.Form
无
label1
学号:
System.Windows.Forms.Label
无
tbxSID
无
System.Windows.Forms.TextBox
btnGet
查找
System.Windows.Forms.Button
btnGet_Click
tbxGetStudent
无(Multiline属性为True)表示多行
System.Windows.Forms.TextBox
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10 using System.Data.SqlClient;
11
12 namespace Procedure
13 {
14 public partial class formCommandProc : Form
15 {
16 public formCommandProc()
17 {
18 InitializeComponent();
19 }
20
21 private void btnGet_Click(object sender, EventArgs e)
22 {
23 try
24 {
25 //接受到的学号文本类型转换为整型int
26 Convert.ToInt32(tbxSID.Text);
27 }
28 catch
29 {
30 tbxGetStudent.Text += "The student ID does not exists.";
31 tbxGetStudent.Text += "\r\n";
32 return;
33 }
34
35 //这句要引用System.Configuration.dll
36 string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ToString();
37 //这句需要添加 using System.Data.SqlClient;
38 SqlConnection objConnect = new SqlConnection(strConnect);
39
40 SqlCommand objCommand = new SqlCommand("getStudents", objConnect);
41 objCommand.Parameters.Add("@p_SID", SqlDbType.Int);
42 objCommand.Parameters["@p_SID"].Value = tbxSID.Text;
43 objCommand.CommandType = CommandType.StoredProcedure;
44 try
45 {
46 if (objConnect.State == ConnectionState.Closed)
47 {
48 objConnect.Open();
49 }
50 SqlDataReader objDataReader = objCommand.ExecuteReader();
51 if (objDataReader.HasRows ==false)
52 {
53 tbxGetStudent.Text += "The student does not exists.";
54 tbxGetStudent.Text += "\r\n";
55 }
56 else
57 {
58 while (objDataReader.Read())
59 {
60 tbxGetStudent.Text += objDataReader.GetValue(0).ToString() + "\t";
61 tbxGetStudent.Text += objDataReader.GetValue(1).ToString() + "\t";
62 tbxGetStudent.Text += objDataReader.GetValue(2).ToString() + "\t";
63 tbxGetStudent.Text += objDataReader.GetValue(3).ToString() + "\t";
64 tbxGetStudent.Text += "\r\n";
65 }
66 }
67 objDataReader.Close();
68 }
69 catch(Exception exp)
70 {
71 tbxGetStudent.Text += exp.Message;
72 tbxGetStudent.Text += "\r\n";
73 }
74 finally
75 {
76 if(objConnect.State == ConnectionState.Open)
77 {
78 objConnect.Close();
79 }
80 }
81
82 }
83 }
84 }