这么些年,在南开做小事情的故事

小说初稿写于二零一一年三月6日。

一旦我们看过我的小说著作《询问控件、分页控件、页面突显控件,我的Web开发三大得力帮手》相信大家都对Web中的查询控件、页面呈现控件有众多感动,现在自己这多个公布六个Winform版本的形似控件:Winfrom下的查询控件和内容展现控件。

2016年三月,在新加坡游历时翻出初稿做了改动。

先是我们想起一下Web的询问控件和内容突显控件先。

全文记录了一个屌丝男在南开里各类并不高大上的倒卖。作者最终因为这一个倒腾的经验,有幸进入了国企做管理培训生。恩恩,喜欢倒腾的同伙能够看看打发时光,哈哈。

WEB查询控件

———–正文分割线——–

  1. 据悉设定的字段属性在界面显示相应的证实及控件
  2. 协理下拉列表之间的联动,匡助输入数据的求证操作。
  3. 辅助查询历史记录回想功效
  4. 扶助日期控件的并轨
  5. 补助移动省公司界面样式集成

记得第一次漂洋过海,踏上漳校的这天,内心是惊恐不安的。

图片 1

给自身映像最深的入学情景,是师兄师姐一波接一波来推销报纸,电话卡。高中时只略知一二晚自习的要美观到这种情景,内心的火山突然向天空射出浓厚的火苗:原来大学可以如此!!

WEB页面显示控件

还没专业开学的那几天,突然发现湖州校区靠海容易回潮,衣橱有可能容易生虫。于是和邻座兄弟去超市花8元钱买了4包樟脑丸(每包大概20颗樟脑丸,每颗0.1元基金),然后跑男生宿舍推销。每颗定价0.8元,2颗特惠(
这时西红柿炒蛋0.8元一份!)1.5元。对着都依旧新兴的同级同学们,不停地兜售潮湿生虫的概念。大概2个钟头,六个人卖完了4包樟脑丸,一人分了二十几块钱。当时因为这二十多,激动得没睡好。事后很长一段时间,住囊萤和映雪的男生都惦记买了天价樟脑丸。

  1. 援助查看、扩张、编辑二种档次的页面展现
  2. 基于设定的字段属性在界面突显相应的印证及控件
  3. 支撑布局和样式修改
  4. 襄助日期控件的合龙
  5. 补助移动省企业界面样式集成

进去2004年六月。天气转冷了。因为自己喜好躺在床上看书,就想来能夹在炕头铁杆子上的台灯会有自然需要。就跑去漳校外,找了一家女孩子内衣专卖店(哈哈,有兼卖点台灯),和首席执行官谈好价钱,拿了10台床头灯去试销。发现需要很饱满,第一个夜晚除外有品质问题的2把,其他都卖掉了。价格好像是10元进,15元卖。后来内外大概卖了50个如此的台灯。

图片 2

1二月底旬,立刻临近圣诞节和三元了。在非凡手机还不是很普及的年份(2004年),刚考上大学的学生都会给中学老师同学寄点贺卡吧?于是跑去校门口邮电局,拿了今天总的来说难看得不可能再无耻的首套南开漳校明信片,一个一个宿舍去推销。0.8元进,1元卖,这一个利润现在看来实在少得令人没干劲。也不亮堂当时怎么打了鸡血,不知跑了有些宿舍,费了多少口舌,前后卖了400多张,利润80元左右,还不够现在的同桌充五回话费吧。

下面我来介绍下Winform下的五个控件。

二〇〇五年十一月,赣州校区第一次利用了网络自助选修课系统,全校沸沸扬扬。特别是周围的哥们儿们一个个特意兴奋,我们都在说:体育课都得以自选哦~还有网球课可以选啊!这会还没高大上这些词,然而肯定网球课人气爆棚。当时想那么两人想选网球课,这网球拍的商海必将科学的。于是去校外进了一批拍子屯着等卖。映像很深远,网络自选开通当天该校男生宿舍楼贴了小广告,当天金融系2个宿舍就买了4把!相对是大单了!事后楼上兄弟问这单赚了略微,我算了下大约85元,被批判卖得太狠不道德(
额)

Winfrom下的询问控件和情节显示控件和Web的特性和核心框架是同一的,都是基于字段信息,自动构筑UI,并提供对数据的认证,下拉列表联动等,以便缩短界面代码和界面布局导致的工作量大增。

大二转系,暑期憋足了劲想做新生工作。这会儿新生用品的饭碗都是被老生觊觎的大蛋糕。现在的学童都是在咖啡店里谈风投谈人脉,可曾想过那时多少个男生撑着一张写着【师兄团队】的破布卖蚊帐和脸盆是种如何的心态。

做这五个控件的重中之重目的是压缩代码,并方便代码生成工具Database2夏普(Sharp)自动生成UI内容(WEB和Winform界面),相当于把界面显示的逻辑举办了打包。

这时候好卖的事物。首如若小锁头,插座等容易忘带来的小件,以及台灯这种不便宜从家带的大件。市场虽大,不过竞争惨烈。心里盘算,要抢更多工作,必须能在新生入学的两天时间内以最急速度去掩盖宿舍。于是制定了一个得以升级速度的销售策略:不卖东西,改送东西!送东西速度永远比卖东西快。送新生一把锁,但必须签字答应从我这边买台灯。锁的钱从灯里赚回来(对白:这时候几乎没人知道Tmall)。

图片 3

后来入学的这两天,带着感冒的身体疯狂送锁。送出近100把锁,也就代表换回近100个台灯的订单。事后光送货就花了5天时间。10年后的前几日慨叹下这时候研究生的契约精神,近100个订单中唯有1名新生毁约了

图片 4

二零零五年十一月。三次午饭,和楼上杨楷谈到2003级的师兄师姐顿时要搬回总部读大三的事,觉得这时候肯定师兄师姐会留下不少没用了的参考书。于是霎时行动,先是上门找师兄收旧书(价格都还记得,法语参考书3元一本,高数5元一本),发现收书太慢,就在女孩子凌云楼下摆点收书,很快场地就壮观起来,说师姐排队卖书给大家一点不过分。

即便和Web界面的控件使用形式大多,我们依旧来突显下有关的代码把,这样有助于精通控件的施用方面。

越努力,越幸运吧。游荡在母校里的收废品岳丈看到大家在收书,就带大家去他家仓库。哇塞,满满一仓库的书,大多是新的(师兄师姐偷懒啦)。大叔按3元1斤卖给大家。于是做了五遍很大的投资,一口气买了1000多(数字也许不标准,只记得装了百分之百一个三轮车)的「旧书」搬回宿舍。等到2015年七月7日这天,乘着校督查队松懈的档子,在酒家门口支起了摊,所有师兄师姐的参考书半价销售。真的,这天的外场可以称之为火爆。一直从晌午卖到天黑。好多系里的男生都来支援卖。除了几十本新定义藏语参考书因为教科书改了卖不出去,其他都卖光了。深夜,三双猥琐的眸子在宿舍里清点着洁白的银两。当算出最后五人赚了快1200元时,第一次见到老实内向的小月仰天大笑。

查询控件窗体的一部分代码:

大二,转系去了希伯来语系。碰到了怪才舍友阿雷。他终究大学里最早的一批天猫用户吧(那时候快递量不够,只有邮政能送到信阳校区,还要自己去校门口邮局取)。因为学习需要想买台爱尔兰语的电子词典。去都林电子城问,好易通的JP209是唯一一款日文版的电子辞典,售价分外独立!699元!犹豫没买,回邢台后让阿雷在Taobao上帮我查了下,只要525!什么状态!!这些年代哪有假货的定义,顿时让阿雷买了台回来(记得运费好像是25元!)。得到手,觉得用起来异常顺手,于是脸上就布满了邪恶的笑(哈哈哈)。当时刚学了一个日文单词,汉字写作【八百屋】,日文的意味是蔬菜店,觉得挺酷的,就用【八百屋】六个字印了片子和A4纸广告,在母校里卖电子辞职。1年时光,卖了200多台电子词典和mp4。最高光的时候(焦凹的脸),女对象带进集美高校印度语印尼语系女人宿舍,用阿尔巴尼亚语做了一回口语秀,然后宣传概念:好的口语离不开给力的电子辞典。这天拿了14台卡西欧电子辞典的订单!依旧记得之后收了近2万元的现金,怀揣着「巨款」和女对象(现在的妻妾
)兴奋而紧张地坐在集美回明斯克岛的公交上,望着窗外暗暗喜悦的气象。那一幕怎能忘掉!电子辞典的差事,前后赚了10000多吧。

        private void InitSearch()
        {
            SearchControl1.Dock = DockStyle.Fill;
            //SearchControl1.PanelBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            this.groupBox1.Controls.Add(SearchControl1);

二〇〇九年大四。毕业前夕,发现包裹行李需要箱子和蛇皮袋。于是百度上交流了一家能提供这种产品的商家。过了两天,宿舍里就堆起了快2米高的瓦楞纸箱和蛇皮袋(后来还补过四次货)。刚初叶动销相比慢,一天2-3单,进入1月初快11月的那会,订单一下井喷,送货忙可是来。卖到9月尾先周,就满门卖空了。后来没心绪做了。好多学童打电话说,你们再进点货吧,实在需要纸箱。。这笔生意和室友赚了1800元。请系里的小兄弟在校门口的东北菜馆狠狠吃了一顿,还记得这次一桌吃了600块!这时候几杯小酒下去我们就心情得可怜,隔壁马耳他语专业的弟兄让主管端了一大碗白糖上来撒在几片切开的西红柿上,这豪迈奢华的撒糖动作至今记得。

            this.SearchControl1.OutSQLValueChanged += new OutSQLChangedHandle(SearchControl1_OutSQLValueChanged);
            this.SearchControl1.OnAddNew += new AddNewHandler(SearchControl1_OnAddNew);
            this.SearchControl1.OnDelete += new DeleteHandler(SearchControl1_OnDelete);

幸而了高校之间的磨难,给自己贫瘠的简历扩张了某些专程的情调。毕业后收获了去民有公司做管理培训生的时机。

            Button appendButton = CreateButton(“btnAppended”, “其他”);
            this.SearchControl1.AppendedButtons = new Button[] { appendButton };

谢谢一起做过小事情的哥们儿们。谢谢买过自己樟脑丸的和羞耻贺年卡的同桌们。谢谢带我走进电商世界的阿雷。谢谢陪我去兴华大学摆摊,陪自己一同被赶出来的女对象。

            FieldInfo nameInfo = new FieldInfo(“Name”, “姓名”, FieldType.String);

毕业后爱折腾的性情不改。先是买了条码机承包了企业打印条码的工作(业务这么些词好大哇),睡眼惺忪地守在条码机前卷条码,一个夜间打印1万张条码赚150元已是很知足的。后来意识辛辛那提便利店日清的方便面都有卖,格拉茨却没什么卖。于是从第比利斯倒了日清合味道去得梅因卖。从第一次拿90箱试探,到最高峰一个月卖了1000多箱。

            FieldInfo cityInfo = new FieldInfo(“City”, “城市”, FieldType.String);
            cityInfo.Width = 100;
            cityInfo.Items = new CListItem[] { new CListItem(“北京市”, “北京”), new CListItem(“广州”), new CListItem(“成都”) };
            cityInfo.TargetFieldName = “Area”;
            cityInfo.OnFillItem += new AddItemHandler(this.OnFillItem);

再后来,利用在东瀛的人脉关系,倒腾起了东瀛代购。从最初一周二两单,到近来一天十多少个包裹。当初陪我一头摆摊的女对象,现在成了陪自己联合打包包裹的男女姑姑。

            FieldInfo areaInfo = new FieldInfo(“Area”, “地区”, FieldType.String);
            areaInfo.Items = new CListItem[0];

谢谢这段不起眼却历历在目的年轻,谢谢这段镌刻着亚松森高校LOGO的时间。时光的河入海流,我们终会分头走。但高校的时段总会留下大家很多何人也带不走的事物。感恩,体贴。

            FieldInfo manInfo = new 菲尔德(Field)(Field)Info(“Man”, “是否男性”, 菲尔德(Field)(Field)Type.Boolean);
            菲尔德(Field)Info birthInfo = new 菲尔德(Field)Info(“Birthday”, “出生日期”, 菲尔德(Field)(Field)Type.Date提姆(Tim)e);
            FieldInfo ageInfo = new FieldInfo(“Age”, “年龄”, FieldType.Numeric);

            this.SearchControl1.SearchFields = new FieldInfo[] { nameInfo, cityInfo, areaInfo, manInfo, birthInfo, ageInfo };
            this.SearchControl1.RowControls = 3;
            this.SearchControl1.ShowAddNew = true;
            this.SearchControl1.LabelHorizontalAlign = System.Windows.Forms.VisualStyles.HorizontalAlign.Right;
            this.SearchControl1.InSQL = “Select * from Test”;

            BindData();
        }

        private void BindData()
        {
            using (SqlConnection conn = new SqlConnection(CONNECTION_STRING))
            {
                conn.Open();

                string sql = this.SearchControl1.OutSQL;
                SqlCommand command = new SqlCommand(sql, conn);
                foreach (string key in this.SearchControl1.PagerParameters.Keys)
                {
                    command.Parameters.Add(new SqlParameter(key, this.SearchControl1.PagerParameters[key]));
                }

                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataSet ds = new DataSet();
                adapter.Fill(ds, “test”);

                this.dataGridView1.DataSource = ds.Tables[0];
            }

 

页面展现控件的窗体部分代码:

        private void InitEditControl()
        {
            editControl.Dock = DockStyle.Fill;

            //editControl.ControlType = ControlType.Edit;
            //TestInfo info = new TestInfo();
            //info.Name = “wuhuacong”;
            //editControl.EntityObject = info;

            FieldInfo nameInfo = new FieldInfo(“Name”, “姓名”, FieldType.String);
            nameInfo.IsRequired = true;
            nameInfo.ToolTip = “请输入用户名称”;
            nameInfo.ColumnSpan = 2;
            nameInfo.Width = 400;
            //nameInfo.MaxLength = 255;
            //nameInfo.TextColumns = 100;
            //nameInfo.TextRows = 2;
            //nameInfo.Enabled = false;
            nameInfo.IsMultiLine = true;
            //if (editControl.ControlType != ControlType.Add)
            //{
            //    nameInfo.Enabled = false; //设置“名称”不可编辑
            //}

            FieldInfo cityInfo = new FieldInfo(“City”, “城市”, FieldType.String);
            cityInfo.Items = new CListItem[] { new CListItem(“北京市”, “北京”), new CListItem(“广州”), new CListItem(“成都”), new CListItem(“武汉”) };
            cityInfo.TargetFieldName = “Area”;
            cityInfo.OnFillItem = new AddItemHandler(this.AddItem);
            cityInfo.ColumnSpan = 2;

            FieldInfo areaInfo = new FieldInfo(“Area”, “地区”, FieldType.String);
            areaInfo.Items = new CListItem[0];

            FieldInfo manInfo = new 菲尔德(Field)Info(“Man”, “是否男性”, Field(Field)Type.Boolean);
            manInfo.Items = new CListItem[] { new CListItem(“男性”, “True”), new CListItem(“女性”, “False”) };
            manInfo.DefaultValue = “False”;

            菲尔德(Field)Info birthInfo = new Field(Field)Info(“Birthday”, “出生日期”, Field(Field)Type.Date提姆e);
            birthInfo.IsRequired = true;
            birthInfo.DefaultValue = “2009-1-1”;
            birthInfo.CustomFormat = “yyyy-MM-dd”;

            FieldInfo ageInfo = new FieldInfo(“Age”, “年龄”, FieldType.Numeric);
            //ageInfo.CustomFormat = “#.##”;

            FieldInfo favoriteInfo = new Field(Field)Info(“Favorites”, “兴趣爱好”, 菲尔德(Field)(Field)Type.String);
            favoriteInfo.Items = new CListItem[] { new CListItem(“篮球”), new CListItem(“足球”), new CListItem(“网球”), 
                new CListItem(“乒乓球”), new CListItem(“台球”,”t”), new CListItem(“羽毛球”, “y”) };
            favoriteInfo.ItemsType = ListControlType.CheckBoxList;
            favoriteInfo.ColumnSpan = 2;
            favoriteInfo.Width = 300;
            //favoriteInfo.DefaultValue = “篮球,乒乓球,t,y”;

            editControl.EidtFields = new FieldInfo[] { nameInfo, cityInfo, areaInfo, manInfo, birthInfo, ageInfo, favoriteInfo };
            editControl.RowControls = 2; //默认一行放置2个控件组
            //editControl.ContentControlWidth = 200;//所有控件统一宽度
            editControl.LabelHorizontalAlign = HorizontalAlign.Right;//标签文本对其方法
            editControl.PanelBorderStyle = TableLayoutPanelCellBorderStyle.None;//表格样式

            editControl.OnCancel = new CancelHandler(this.OnCancel);
            editControl.OnSaveData = new SaveDataHandler(this.OnSaveData);
            this.groupBox1.Controls.Add(editControl);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            InitEditControl();
        }

 

下面附上使用的例证,能够下载下来渐渐研商,其中Database.sql是测试例子的数据库脚本,允许例子前,请开始化数据库。

http://files.cnblogs.com/wuhuacong/TestWinControl.rar 

梦想我们使用愉快,下一步我将集成UI的自动生成到Database2Sharp中,和Web一样,利用查询控件和分页控件、页面展现控件完成UI的变型。