桌面程序开发入门(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执行下面的全部语句。
CREATE DATABASE TestDB GO USE TestDB GO CREATE TABLE Student ( SID INT IDENTITY(1, 1) NOT NULL , SName NVARCHAR(50) NOT NULL , Sex NVARCHAR(2) NOT NULL , Area NVARCHAR(20) NOT NULL , Email NVARCHAR(50) NOT NULL ) ON [PRIMARY] GO INSERT INTO dbo.Student ( SName, Sex, Area, Email ) VALUES ( N'风花雪月', N'男', N'北京', N'abc@qq.com' ), ( N'泡椒田鸡', N'女', N'上海', N'abcd@qq.com' ), ( N'红灯酒绿', N'男', N'天津', N'abc@qq.com' ); GO CREATE PROCEDURE getStudents @p_SID INT AS BEGIN SET NOCOUNT ON; IF NOT EXISTS ( SELECT SID FROM dbo.Student WHERE SID = @p_SID ) PRINT 'The student does not exists.' ELSE SELECT SID , SName , Sex , Area , Email FROM dbo.Student WHERE SID = @p_SID END GO --测试-- --EXEC dbo.getStudents @p_SID = 2 -- int -->2 泡椒田鸡 女 上海 abcd@qq.com
四、在程序配置文件中添加数据库连接字符串,这里是Windows集成,所以没有看到用户名和密码的属性。添加完后,在代码里就可以通过TestDBConnectionString这个字符串连接数据库了!
五、开始设计窗体和写代码(这些步骤比较繁琐,所以再细分几个步骤,这样比较清晰)
5.1)设计主窗体
1.在创建新项目的时候,系统会默认创建一个名为Form1.cs的主窗体,现在把它更名为FormMain.cs
2.在工具栏拖动MenuStrip控件到主窗体,主菜单横向有3项,分别是:存储过程、XML、退出。存储过程包括:使用Command 和 使用DataAdapter; XML包括:创建XML和读取XML; 具体设置参照下表:
![]() |
|
3.选中主窗体,在属性窗口修改IsMdiContainer为True,这样就把这个普通的窗体变成了父窗体。如图:
4.添加4个事件的处理程序和一个退出程序事件,程序的功能是实例化4个窗体,并指定自己的父窗体,代码没什么可讲的,都一个德行。
private void useCommandToolStripMenuItem_Click(object sender, EventArgs e) { formCommandProc form = new formCommandProc(); form.MdiParent = this; form.Show(); } private void useDataAdapterToolStripMenuItem_Click(object sender, EventArgs e) { formDataAdapterProc form = new formDataAdapterProc(); form.MdiParent = this; form.Show(); } private void createXMLToolStripMenuItem_Click(object sender, EventArgs e) { formXMLCreate form = new formXMLCreate(); form.MdiParent = this; form.Show(); } private void readXMLToolStripMenuItem_Click(object sender, EventArgs e) { formXMLRead form = new formXMLRead(); form.MdiParent = this; form.Show(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); }
到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:
5.接下来就是要设计子窗体的样式和功能了。
打开formCommandProc设计模式界面,安照下表属性添加相关控件:
![]() |
|
按钮单击事件处理程序btnGet_Click:我把整个文件的代码都放上来了,重点是按钮点击事件!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace Procedure { public partial class formCommandProc : Form { public formCommandProc() { InitializeComponent(); } private void btnGet_Click(object sender, EventArgs e) { try { //接受到的学号文本类型转换为整型int Convert.ToInt32(tbxSID.Text); } catch { tbxGetStudent.Text += "The student ID does not exists."; tbxGetStudent.Text += "\r\n"; return; } //这句要引用System.Configuration.dll string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ToString(); //这句需要添加 using System.Data.SqlClient; SqlConnection objConnect = new SqlConnection(strConnect); SqlCommand objCommand = new SqlCommand("getStudents", objConnect); objCommand.Parameters.Add("@p_SID", SqlDbType.Int); objCommand.Parameters["@p_SID"].Value = tbxSID.Text; objCommand.CommandType = CommandType.StoredProcedure; try { if (objConnect.State == ConnectionState.Closed) { objConnect.Open(); } SqlDataReader objDataReader = objCommand.ExecuteReader(); if (objDataReader.HasRows ==false) { tbxGetStudent.Text += "The student does not exists."; tbxGetStudent.Text += "\r\n"; } else { while (objDataReader.Read()) { tbxGetStudent.Text += objDataReader.GetValue(0).ToString() + "\t"; tbxGetStudent.Text += objDataReader.GetValue(1).ToString() + "\t"; tbxGetStudent.Text += objDataReader.GetValue(2).ToString() + "\t"; tbxGetStudent.Text += objDataReader.GetValue(3).ToString() + "\t"; tbxGetStudent.Text += "\r\n"; } } objDataReader.Close(); } catch(Exception exp) { tbxGetStudent.Text += exp.Message; tbxGetStudent.Text += "\r\n"; } finally { if(objConnect.State == ConnectionState.Open) { objConnect.Close(); } } } } }
现在试运行一下程序,应该可以从数据库里读取数据了!