桌面程序开发入门(WinForm with C#)

1、使用Visual Studio 2013创建新项目

2、创建一个主窗体和4个子窗体

3、创建一个数据库、一个表、一个存储过程

4、在配置文件里添加数据库连接字符串

5、真正的编码工作。


第一步:创建新项目,一张图片抵一万字!看图说话,呵呵。。

第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、formXMLRead.cs。

三、创建一个数据库、一个表、一个存储过程。打开MS SQL Server Management Studio执行下面的全部语句。     

 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
View Code

四、在程序配置文件中添加数据库连接字符串,这里是Windows集成,所以没有看到用户名和密码的属性。添加完后,在代码里就可以通过TestDBConnectionString这个字符串连接数据库了!

     

五、开始设计窗体和写代码(这些步骤比较繁琐,所以再细分几个步骤,这样比较清晰)

5.1)设计主窗体

      1.在创建新项目的时候,系统会默认创建一个名为Form1.cs的主窗体,现在把它更名为FormMain.cs
     
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  
       

      3.选中主窗体,在属性窗口修改IsMdiContainer为True,这样就把这个普通的窗体变成了父窗体。如图:

      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         }
View Code

到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:

5.接下来就是要设计子窗体的样式和功能了。

打开formCommandProc设计模式界面,安照下表属性添加相关控件:

(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  

按钮单击事件处理程序btnGet_Click:我把整个文件的代码都放上来了,重点是按钮点击事件!

 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 }
View Code

现在试运行一下程序,应该可以从数据库里读取数据了!

明天再写吧。。

posted @ 2014-05-05 00:21  海阔天空XM  阅读(23317)  评论(0编辑  收藏  举报