桌面程序开发入门(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(, )
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 ,
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; 具体设置参照下表:
![]() |
|
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().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#)的更多相关文章
- 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...
- scala程序开发入门
scala程序开发入门,快速步入scala的门槛: 1.Scala的特性: A.纯粹面向对象(没有基本类型,只有对象类型).Scala的安装与JDK相同,只需要解压之后配置环境变量即可:B.Scala ...
- 用python进行桌面程序开发
Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...
- 微信小程序开发入门(一)
小程序学习入门--(一) 最近自己学习微信小程序的过程当中自己总结出来的知识点,我会不断地更新和完善! 小程序的开发工具 一台电脑 熟悉HTML.CSS.JS基本语法 开发工具: 微信web开发者工 ...
- 微信小程序开发入门与实践
基础知识---- MINA 框架 为方便微信小程序开发,微信为小程序提供了 MINA 框架,这套框架集成了大量的原生组件以及 API.通过这套框架,我们可以方便快捷的完成相关的小程序开发工作. MIN ...
- 微信小程序-开发入门
微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应用场景(用完即走和二维码分发等)还是很值 ...
- 微信小程序开发入门篇
本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果. 开发准备工作 获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的& ...
- 微信小程序开发入门:10分钟从0开始写一个hello-world
小程序开发需要三个描述整体程序的app文件 和 一个描述多个页面的 pages文件夹. (1)三个app文件分别是app.js,app.json,app.wxss. app.js文件是脚本文件处理一些 ...
- 程序开发入门工具之CodeBlocks
程序开发基础工具之CodeBlocks 作为程序开发工作者,我们会接触很多的程序开发软件:但实用以及容易掌握的程序开发软件对于初学者的学习能力是有一定的加成的.今天我就作为一个程序开发者给大家推荐一个 ...
随机推荐
- 洛谷P2633 Count on a tree(主席树上树)
题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个 ...
- javascript 问题
两个数组比较:a.sort().toString() == b.sort().toString() for循环内有异步方法时,需要闭包 JSON.parse(data)出错时(提示.[nodejs中] ...
- java web 通过前台输入的数据(name-value)保存到后台 xml文件中
一:项目需求,前端有一个页面,页面中可以手动输入一些参数数据,通过点击前端的按钮,使输入的数据保存到后台生成的.xml文件中 二:我在前端使用的是easyui的propertygrid,这个能通过da ...
- 团队博客-第六周:Alpha阶段项目复审(科利尔拉弗队)
团队的排名-点评:以下排名点评谨代表个人观点,如有冒犯,评论联系删除 小组名字和链接 优点 缺点,bug报告(至少140字) 最终名次(无并列) 中午吃啥队 微信小程序应用,新型app会是一个便利的使 ...
- [javascript library]使用js实现页面刷新后依然保留表单填写的数据
详情请见于该链接:http://sisyphus-js.herokuapp.com/
- Oracle EBS中有关Form的触发器的执行顺序
http://blog.csdn.net/postfxj/article/details/8135769 触发器执行顺序: 1. 当打开FORM时: (1) PRE-FORM (2) ...
- 主程序与DLL之间的全局变量问题
http://www.cnblogs.com/railgunman/archive/2010/11/29/1891200.html 主程序与DLL之间的全局变量问题 有几个朋友经常向我问题在DLL ...
- WinRT 中检查 WiFi 是否可用
public static bool IsWifiConnected() { bool isWifiConnected = false; ConnectionProfile currentConnec ...
- 使用jetty-maven-plugin运行maven多项目
1.准备工作 org.eclipse.jetty jetty-maven-plugin 9.2.11.v20150529 jdk 1.7 maven 3.1 2.采用maven管理多项目 ...
- redis开机自启动脚本(linux)
目前redis放在home下的文件夹中,写一个脚本,待系统启动的过程中,去启动该脚本. 脚本:redis.sh #!/bin/sh /home/juepei/Downloads/redis-3.0.0 ...