zoukankan      html  css  js  c++  java
  • 桌面程序开发入门(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; 具体设置参照下表:

    (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 += "
    ";
                    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 += "
    ";
                    }
                    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();
                    }
                }
    
            }
        }
    }

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

  • 相关阅读:
    二叉排序树和平衡二叉树
    博客首页特效整理2
    博客首页特效整理
    19-20下学期思维导图
    19-20下学期第一次作业问卷调查回答
    c++实现五子棋游戏
    c++实现扫雷游戏
    c++实现2048游戏
    c++实现推箱子游戏
    C++实现贪吃蛇小游戏
  • 原文地址:https://www.cnblogs.com/sq45711478/p/9472954.html
Copyright © 2011-2022 走看看