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

2023-07-11,,

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(, )
NOT NULL ,
SName NVARCHAR() NOT NULL ,
Sex NVARCHAR() NOT NULL ,
Area NVARCHAR() NOT NULL ,
Email NVARCHAR() 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 = -- int
--> 泡椒田鸡 女 上海 abcd@qq.com

四、在程序配置文件中添加数据库连接字符串,这里是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个窗体,并指定自己的父窗体,代码没什么可讲的,都一个德行。

 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设计模式界面,安照下表属性添加相关控件:

(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:我把整个文件的代码都放上来了,重点是按钮点击事件!

 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().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().ToString() + "\t";
tbxGetStudent.Text += objDataReader.GetValue().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();
}
} }
}
}

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

明天再写吧。。

桌面程序开发入门(WinForm with C#)的相关教程结束。

《桌面程序开发入门(WinForm with C#).doc》

下载本文的Word格式文档,以方便收藏与打印。