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 TestDB2 GO3 USE TestDB4 GO5 CREATE TABLE Student6     (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

四、在程序配置文件中添加数据库连接字符串,这里是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         }

到目前位置,程序基本都可以运行起来了,只不过没具体干什么,先看看运行起来的样子,没点击一个菜单项都会创建一个子窗体,如图:

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 }

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

from: https://www.cnblogs.com/wanghaibin/p/3708306.html

桌面程序开发入门(WinForm with C#)相关推荐

  1. Flutter教程之 02 Flutter 桌面程序开发入门教程运行hello world (教程含源码)

    文章目的 我很高兴 Flutter 来到桌面应用程序开发,当然,这只是一个开始,但你今天已经可以尝试了. 我想向您介绍如何使用基于macOS的 Flutter 教程编写您的第一个桌面应用程序. 1.开 ...

  2. 桌面应用开发框架 - Windows桌面程序开发工具

    桌面应用开发框架 - Windows桌面程序开发工具 桌面应用开发 桌面应用开发是指基于Windows操作系统开发的应用程序,在Windows环境运行,包括32位\64位的应用程序, 从开发者层面讲, ...

  3. 教孩子学编程python语言pdf_iOS(iPhone)应用程序开发入门视频教程(35讲)

    资源名称:iOS(iPhone)应用程序开发入门视频教程(35讲) 资源目录: [IT教程网]ios(iPhone)应用程序开发入门视频教程:第10讲多视图应用程序 [IT教程网]ios(iPhone ...

  4. 《微信小程序开发入门精要》——导读

    本节书摘来自异步社区<微信小程序开发入门精要>一书中的导读,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第1章 微信小程序入门 第1章第1节 ...

  5. android入门程序源代码,安卓程序开发入门

    您可能感兴趣的话题: 安卓程序开发入门 核心提示:本教程为大家介绍采用Eclipse软件来编写安卓Hello,World程序. 创建一个新项目是很简单的,只要你安装了Eclipse插件,并且你的Ecl ...

  6. Linux 应用程序开发入门

    Linux 应用程序开发入门 Neo Chen (netkiller) <openunix@163.com> 版权 © 2011, 2012 http://netkiller.github ...

  7. 小程序onload_微信小程序开发入门之共享账本(十四)

    微信小程序开发入门之共享账本(十四) (备注:微信小程序的wxml文件相当于HTML文件,wxss文件相当于CSS文件,js文件就是JavaScript文件,数据库为NoSQL数据库,数据库脚本语言也 ...

  8. 小程序开发入门基础篇-张代浩-专题视频课程

    小程序开发入门基础篇-1995人已学习 课程介绍         采用小程序wepy框架,初级讲解如何搭建小程序的开发环境,创建工程,语法介绍.开发调试等,课程采用实战代码案例作为教材,通俗易懂,简单 ...

  9. 《微信小程序开发入门精要》——第2章,第2.8节带边距的水平等间隔排列

    本节书摘来自异步社区<微信小程序开发入门精要>一书中的第2章,第2.8节带边距的水平等间隔排列,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.8 ...

最新文章

  1. 目标检测|SSD原理与实现
  2. linux系统常用的中间件
  3. 17委托异步调用方法
  4. java获取vdx文件数据_通过文件名获取文件类型ContentType
  5. Django 流式响应中文csv样例
  6. Android Activity和Fragment的转场动画
  7. 深度学习:卷积神经网络(convolution neural network)
  8. 移动办公系统 服务器地址,安卓系统移动办公服务器地址
  9. [国嵌笔记][036][关闭MMU和CACHE]
  10. 有哪些关于iPhone使用的小技巧?
  11. 华为发布政企战略及华为云Stack,瞄准新基建下政企的数字化转型
  12. java heap space 解决方法_内存溢出错误:java堆空间
  13. 关于JSZIP压缩图片打包下载的一些用法
  14. Linux网络编程 -- Linux常用工具的使用(vim、gcc、gdb、makefile、shell)
  15. 03.豆豆的《背叛》与《天道》
  16. C语言——数据结构之广义表(概念及其存储结构)
  17. PBOC/EMV之持卡人验证
  18. 常用半导体器件之二极管
  19. c语言内存和文件处理有关知识
  20. 手把手教你学Go(二)——Hello world

热门文章

  1. SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
  2. jmap查看内存使用情况与生成heapdump--转
  3. 手机中的AR是怎么实现的
  4. android 开发规范1
  5. 【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  6. Web3.0来了!玩法变了
  7. 通过零知识证明,成为重要的区块链革新者
  8. 华为电话面试题java_华为java面试题(含电话面试)
  9. Redis-08Redis数据结构--基数HyperLogLog
  10. linux 服务器 iptables 防止arp病毒,让Linux系统有效防御ARP攻击的实用技巧