(PS  sqlhelper的文件 竟放到 类库里了,第二篇已做了分离,边做边写的 ^_^)

做 Winform  项目时,要拖很多控件,感觉在做重复的事,那就应该用程序来完成,那就自己写一个吧.--人懒就得多”干活” ,

代码下载 地址 http://pan.baidu.com/s/1nuZjyat

控件的类型 ,及名称,我们要从数据库获取. 下面是 要用到 Sql语句

SELECT * FROM Master..SysDatabases ORDER BY Name --获取数据库信息(本文指定了数据库,所以此条不用,但可用扩展)

SELECT Name FROM SysObjects Where XType='U' ORDER BY Name --获取用户创建的表名

Select Name from syscolumns Where ID=OBJECT_ID('表名') --获取字段名

SELECT T1.COLUMN_NAME,T1.DATA_TYPE,T2.value From fn_listextendedproperty  (NULL, 'schema', 'dbo', 'table', '表名', 'column', default) T2
Right Join information_schema.columns as T1 on T1.COLUMN_NAME = t2.objname COLLATE Chinese_PRC_CI_AS
where T1.TABLE_NAME='表名' --查询字段类型及说明 (下面是可能出现的错误 及解决方案)
--获取字段说明(fn_listextendedproperty不提供参数)
--无法解决 equal to 运算中 "Latin1_General_CI_AI" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
--哪个表不是Chinese_PRC_CI_AS排序 加上 COLLATE Chinese_PRC_CI_AS

本章 来说说 简单的 窗体控件生成.

创建一个 窗体会生成两个文件,如果这个窗体引用了其他的 资源就会有3个

这里创建的 窗体名为Generator_Simple 所以会生成以下文件

Generator_Simple.cs   //窗体上的方法代码都写在此文件内

Generator_Simple.Designer.cs   //窗体设计代码(系统生成),控件绑定方法也写在此文件

Generator_Simple.resx  //资源文件如ico文件(如果没引用此文件可以不要)

好,我们往往 Generator_Simple 窗体上拖一个 button 控件,看看Generator_Simple.Designer.cs 有什么 变化,

比较 代码,可以知道 ,新建一个 button 控件, Generator_Simple.Designer.cs 有4个地方出现了变化.

//创建 button1 对象

private System.Windows.Forms.Button button1;

//实例化button1 对象

this.button1 = new System.Windows.Forms.Button();

//设置 button1 的基本属性

this.button1.Location = new System.Drawing.Point(37, 42);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(75, 23);

this.button1.TabIndex = 0;

this.button1.Text = "button1";

this.button1.UseVisualStyleBackColor = true;

//把 button1绘制 到窗体

this.Controls.Add(this.button1);

先在窗体上 创建一个 按钮试试

 private void btn_Test_Click(object sender, EventArgs e)
{
Button btn = new Button();
btn.AutoSize = true;
btn.Location = new System.Drawing.Point(,); //X,Y
btn.Text = "新增按钮";
btn.Click += new System.EventHandler(SayHello);
btn.Size = new System.Drawing.Size(, ); // width, height
this.Controls.Add(btn); }
private void SayHello(object sender, EventArgs e)
{
MessageBox.Show("Hello World!");
}

其他控件也按这种方法,就知道怎么的绘制了.

读取 数据库,然后

先创建一个简单的 从数据库 读取数遍,在窗体上 创建控件

说下 程序的 架构

WinformGenerator(类库文件,生成器主要代码都在这)

IBase(每个空间都有一个接口,用于实现不同属性的设置)

ILable.cs(Label控件接口)

ITextBox.cs(TextBox控件接口)

Base(控件的基本属性,此处是模板)

BaseControl.cs(基础模板的属性,如名称,位置,大小)

Control(对Ibase接口的实现,就是创建控件代码)

GetLabel.cs(创建Label控件代码)

GetTextBox.cs(创建TextBox控件代码)

Forms(窗体模板,)  //一共讲创建3种窗体,本文讲最简单的

SimpleForm.cs(简单窗体)//本文只讲了 Label,TextBox,DateTimePicker 三种控件

Static(静态文件)

WinFormPars.cs(存放静态变量的,如sql连接字符,读取web.config里的value)

WinInfo.cs(存放静态变量,记录窗体生成的信息,如控件位置,判断是否换行)

SqlHelper.cs (读取数据库的,)

WinformGenerator_Simple(winForm主体,要引用WinformGenerator 类库)

筛选表名

var result = tabAll.Where(q => q.Contains(txt_TabName.Text.Trim())).ToArray();

我把每个 控件必须的 属性 抽离到一个类中,里面有个方法 用于 判断控件是否换行,在 实现接口创建控件时, 可额外加入其他属性

简单的窗体 创建 控件 如下图片

我生在成的窗体名 是QQ ,拖入 项目, 然后show 一下.

private void btn_Test_Click(object sender, EventArgs e)

{

QQ win = new QQ();

win.ShowDialog();

}

这篇就讲到这些吧

PS

WinFormPars.cs  从app.config 的 appSettings读取数据

TimeFormat  用于 设置 时间格式,代码中 用到格式化时间,可以这统一设置

Details  窗体上选中表名,会加上 Details 的值,就是从表名, 如果想换成其他 字符,可在app.config 里修改

winform代码生成器(一)的更多相关文章

  1. winform代码生成器(二)

    代码下载 地址 http://pan.baidu.com/s/1nuZjyat 接着说 上文继续说,这次我们要生成主从表. 此方用到了第三方的 控件 DevExpress 的Gridview .大家可 ...

  2. winform代码生成器(三)

    代码下载 地址 http://pan.baidu.com/s/1nuZjyat 接上面的两篇. 用户有时对 从表的 排版不喜欢,可以因某些字太长,需要拉长一些,有些则需要隐藏. 有什么办法呢? 我的思 ...

  3. SNF开发平台WinForm之九-代码生成器使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    下面就具体的使用说明: 1.获取代码生成器的授权码(根据本机)-----还原数据库-------改config-----代码生成器 改代码生成器Config 2.登录代码生成器 3.查看是否连接成功 ...

  4. 动软代码生成器三层用于winform

    DBUtility项目中的DbHelperSQL.cs (找自己对应的数据库类型) 修改前20行中的数据库连接字符串获取方式为: //数据库连接字符串(web.config来配置),多数据库可使用Db ...

  5. 收藏收藏:工作用了很久的自主开发的Sql Server代码生成器,我开源了(.NET Winform)

    大家好,已经一年没见了,我的技术已经有了惊人的进步.于是乎就来为大家分享技术了,今天呢为大家带来的是很早之前开发的老工具分享给大家. 相信大家都使用过代码生成器,用起来顺手的有多少?根据自己的业务配置 ...

  6. winform快速开发平台 -> 通用权限管理之动态菜单

    这几个月一直忙APP的项目,没来得及更新项目,想想该抽出时间整理一下开发思路,跟大家分享,同时也希望得到宝贵的建议. 先说一下我们的权限管理的的设计思路,首先一个企业信息化管理系统一定会用到权限管理, ...

  7. WinForm开发之取送货管理1

    一.取送货管理项目需求 该系统的业务背景如下:客户是一个针织半成品生产加工作坊,有很多生产加工人员从客户工厂那里取走半成品,加工成成品后送回来.客户根据加工每种半成品的加工单价和完成数量,付费用给生产 ...

  8. Winform开发框架之介绍

    winform开发框架,尽量减少程序员在界面中的代码量和工作量,Model自动生成,界面以及控件自动生成,简单的逻辑自动生成.自动生成的界面已经实现简单逻辑增删改查功能. 其他开发框架都已经或多火烧实 ...

  9. SNF开发平台WinForm之十四-站内发送系统信息-SNF快速开发平台3.3-Spring.Net.Framework

    1运行效果: 2开发实现: .组装站内信息发送实体对象. SNFService SNFService = new SNFService(); if (this.ucUser.SelectedIds ! ...

随机推荐

  1. WPF GridView中的CellTemplate失效的原因

    最近做一个ListView的Style时,发现一个问题, 就是我的GridView的GridViewColumn的CellTemplate无论是用StaticResource还是DynamicReso ...

  2. zk 01之 ZooKeeper概述

    Zookeeper产生的背景 ZooKeeper---译名为“动物园管理员”.动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的 ...

  3. .NETFramework:ConfigurationManager

    ylbtech-.NETFramework:ConfigurationManager 1.程序集 System.Configuration, Version=4.0.0.0, Culture=neut ...

  4. Cocos2d-x v3.x and Xcode 6.x with ARM 64 Architecture

    转自:http://becomingindiedev.blogspot.com.es/2014/12/cocos2d-x-v3x-and-xcode-6x-with-arm-64.html Hi! W ...

  5. 【何镇汐】-Web UI Util 框架

    http://www.cnblogs.com/xiadao521/p/4518516.html

  6. AngularJs(Part 2)

    I am still tired to translate these into Chinese. but who cares? i write these posts just for myself ...

  7. PCL中异常处理机制

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=287 本节我们主要讨论PCL在编写和应用过程中如何利用PCL的异常机制,提高 ...

  8. javascript数组对象

    constructor属性 返回数组对象原型 var arr = [1,2,3,4,5]; arr.constructor //输出 function Array() { [native code] ...

  9. FZU - 2218 Simple String Problem(状压dp)

    Simple String Problem Recently, you have found your interest in string theory. Here is an interestin ...

  10. Python中生成随机数

    目录 1. random模块 1.1 设置随机种子 1.2 random模块中的方法 1.3 使用:生成整形随机数 1.3 使用:生成序列随机数 1.4 使用:生成随机实值分布 2. numpy.ra ...