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

摘要:
第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、formXMLRead.cs。privatevoiduseCommandToolStripMenuItem_Click{formCommandProcform=newformCommandProc();form.MdiParent=this;form.Show();}privatevoiduseDataAdapterToolStripMenuItem_Click{formDataAdapterProcform=newformDataAdapterProc();form.MdiParent=this;form.Show();}privatevoidcreateXMLToolStripMenuItem_Click{formXMLCreateform=newformXMLCreate();form.MdiParent=this;form.Show();}privatevoidreadXMLToolStripMenuItem_Click{formXMLReadform=newformXMLRead();form.MdiParent=this;form.Show();}privatevoidexitToolStripMenuItem_Click{Application.Exit();}到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:5.接下来就是要设计子窗体的样式和功能了。

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

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

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

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

5、真正的编码工作。


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

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

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

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

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

三、创建一个数据库、一个表、一个存储过程。打开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这个字符串连接数据库了!

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

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

5.1)设计主窗体

1.在创建新项目的时候,系统会默认创建一个名为Form1.cs的主窗体,现在把它更名为FormMain.cs
2.在工具栏拖动MenuStrip控件到主窗体,主菜单横向有3项,分别是:存储过程、XML、退出。存储过程包括:使用Command 和 使用DataAdapter; XML包括:创建XML和读取XML; 具体设置参照下表:

桌面程序开发入门(WinForm with C#)第5张
(Name)属性Text属性单击事件处理程序
procedureToolStripMenuItem存储过程
useCommandToolStripMenuItem使用CommanduseCommandToolStripMenuItem_Click
useDataAdapterToolStripMenuItem 使用DataAdapteruseDataAdapterToolStripMenuItem_Click
xmlToolStripMenuItemXML
createXMLToolStripMenuItem创建XMLcreateXMLToolStripMenuItem_Click
readXMLToolStripMenuItem读取XMLreadXMLToolStripMenuItem_Click
exitToolStripMenuItem退出exitToolStripMenuItem_Click

3.选中主窗体,在属性窗口修改IsMdiContainer为True,这样就把这个普通的窗体变成了父窗体。如图:
桌面程序开发入门(WinForm with C#)第6张
4.添加4个事件的处理程序和一个退出程序事件,程序的功能是实例化4个窗体,并指定自己的父窗体,代码没什么可讲的,都一个德行。

private void useCommandToolStripMenuItem_Click(objectsender, EventArgs e)
        {
            formCommandProc form = newformCommandProc();
            form.MdiParent = this;
            form.Show();
        }

        private void useDataAdapterToolStripMenuItem_Click(objectsender, EventArgs e)
        {
            formDataAdapterProc form = newformDataAdapterProc();
            form.MdiParent = this;
            form.Show();
        }

        private void createXMLToolStripMenuItem_Click(objectsender, EventArgs e)
        {
            formXMLCreate form = newformXMLCreate();
            form.MdiParent = this;
            form.Show();
        }

        private void readXMLToolStripMenuItem_Click(objectsender, EventArgs e)
        {
            formXMLRead form = newformXMLRead();
            form.MdiParent = this;
            form.Show();
        }

        private void exitToolStripMenuItem_Click(objectsender, EventArgs e)
        {
            Application.Exit();
        }

到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:
桌面程序开发入门(WinForm with C#)第7张
5.接下来就是要设计子窗体的样式和功能了。

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

桌面程序开发入门(WinForm with C#)第8张
(Name)属性Text属性控件类型单击事件
formCommandProc使用Command对象执行存储过程System.Windows.Forms.Form
label1学号:System.Windows.Forms.Label
tbxSIDSystem.Windows.Forms.TextBox
btnGet查找System.Windows.Forms.ButtonbtnGet_Click
tbxGetStudent无(Multiline属性为True)表示多行System.Windows.Forms.TextBox

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

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;

namespaceProcedure
{
    public partial classformCommandProc : Form
    {
        publicformCommandProc()
        {
            InitializeComponent();
        }

        private void btnGet_Click(objectsender, EventArgs e)
        {
            try{
                //接受到的学号文本类型转换为整型int
Convert.ToInt32(tbxSID.Text);
            }
            catch{
                tbxGetStudent.Text += "The student ID does not exists.";
                tbxGetStudent.Text += "
";
                return;
            }

            //这句要引用System.Configuration.dll
            string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ToString();
            //这句需要添加 using System.Data.SqlClient;
            SqlConnection objConnect = newSqlConnection(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 += "
";
                }
                else{
                    while(objDataReader.Read())
                    {
                        tbxGetStudent.Text += objDataReader.GetValue(0).ToString() + "";
                        tbxGetStudent.Text += objDataReader.GetValue(1).ToString() + "";
                        tbxGetStudent.Text += objDataReader.GetValue(2).ToString() + "";
                        tbxGetStudent.Text += objDataReader.GetValue(3).ToString() + "";
                        tbxGetStudent.Text += "
";
                    }
                }
                objDataReader.Close();
            }
            catch(Exception exp)
            {
                tbxGetStudent.Text +=exp.Message;
                tbxGetStudent.Text += "
";
            }
            finally{
                if(objConnect.State ==ConnectionState.Open)
                {
                    objConnect.Close();
                }
            }

        }
    }
}

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

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

免责声明:文章转载自《桌面程序开发入门(WinForm with C#)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring读取配置文件 @ValueQt创建异形窗口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm

C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm。代码:     public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }         privat...

怎样能使winform窗体的大小固定住,不能调整其大小

窗体FormBorderStyle属性设置为:FixedSingle,再把最大化禁用就可以了 使用.Net编写Windows程序,对于窗体控制常见项目 属性:1、让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) Window...

Winform开发框架之单据窗体生成(主从表,流水单号)

项目源码下载地址:https://github.com/GarsonZhang/GZFramework.Demo 前言 1.在开始本节前请先重置代码为 chapter-03-start 懒人地址:https://github.com/GarsonZhang/GZFramework.ShareDemo/tree/chapter-03-start 2.创建表...

winform窗体(五)——布局方式

一、默认布局 ★可以加panel,也可以不加; ★通过鼠标拖动控件的方式,根据自己的想法布局。拖动控件的过程中,会有对齐的线,方便操作; ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整各个控件大小的工具。 注:分层:右键点击控件。可以选择置于顶层或置于顶层。       锁定控件:当部分布局完成,为了操作失误,把布局好的打乱,可以选中布局...

C# winform在WebBrowser下获取完整的Cookies(包括含HTTPOnly属性的)

利用wininet获取网页Cookie 模拟post请求取数据,使用普通的Cookies无法获取完整的Cookies信息 只能获取了一部分 ,导致取回来的是重新登陆的页面。 后来经过不懈的精神,终于找到了方法实现获取HTTPOnly。 WinInet WinInet(“Windows Internet”)API帮助程序员使用三个常见的Internet协议,...

【WinForm程序】注册热键快捷键切换

重写DefWndProc事件 #region Window 消息捕获 const int WM_COPYDATA = 0x004A; public structCOPYDATASTRUCT { publicIntPtr dwData; public i...