(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. aoj 0033 玉

    図のように二股に分かれている容器があります.1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A から落とし.左の筒 B か右の筒 C に玉を入れます.板 D は支点 E を中心に左右 ...

  2. BZOJ_5359_[Lydsy1805月赛]寻宝游戏_DP

    BZOJ5359_[Lydsy1805月赛]寻宝游戏_DP Description begin.lydsy.com/JudgeOnline/upload/201805.pdf 我们需要找到一条权值最大 ...

  3. IE滚动条

    之前一直没留意过IE下面的滚动条样式,今天碰到一个优化需求,需要去掉横向的滚动条,只保留竖的滚动条. 实现方式很简单,设置宽度,overflow-x:hiddle:overflow-y:scroll ...

  4. kindle3 破解字体

    在万能的链接里下载kindle-fonts-4.4.N-k3.zip,update后kindle里出现linkfonts/fonts,这里就是存放字体的位置,字体格式需用.ttf. 在linkfont ...

  5. Poco 编译mysql

    POCO mysql需要自己添加connecter的header和lib MySQL Client: For the MySQL connector, the MySQL client librari ...

  6. mysql给id生成uuid

    mysql中id一般都设为uuid,除了我们在后台用到的uuid利用jpa注解来生成外,其实在mysql中直接也可以生成 直接上代码: 1.mysql中直接使用uuid()函数,可以生成一个随机的uu ...

  7. E20190418-hm

    distinct adj. 明显的,清楚的; 卓越的,不寻常的; 有区别的; 确切的; predicate  vt. 断言,断定; 宣布,宣讲; 使基于; n. 谓语; 述语;

  8. 在element-ui的表格组件中为表头添加Tooltip 文字提示

    在使用表格组件的时候经常遇到的问题,列数很多,而表头的文字描述长度很长 <el-table-column v-if="!column.event" v-for="( ...

  9. aimOffset注意事项

    AimOffset的记录 AimOffset是什么,就是动画(相对于某个具体姿势比如待机动作的)叠加. AimOffset有什么用,简单说就是叠加动作,比如无双中骑马挥刀动作叠加. 注意步骤 1所有分 ...

  10. C# System.Timers.Time

    System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object se ...