桌面程序開發入門(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

現在試運行一下程序,應該可以從數據庫里讀取數據了!

明天再寫吧。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM