Winform 学习初级 从WebForm到WinForm
一直在做c# 的Web程序,近期由于要用winfrom做个小项目,觉得无从下手,特把痛苦经历记载一下:
先把窗体结构 展示一下:
WEB一个项目多个页面,页面跳转是通过链接来进行页面跳转的,而winfrom没有url,只能通过:
被调用的Login 属性和提交代码:
通过窗体的ShowDialog()来展开新窗体。当然也可用用lg.Show(),不过ShowDialog的好处是可用返回结果。
if (lg.DialogResult == DialogResult.OK) 和login的this.DialogResult = DialogResult.OK; 这2句就可用判断登陆窗口是否通过验证了。
lg.MsgStr = "主窗口弹出信息"; 和 string userName = lg.MsgStr; 通过login的MsgStr 属性 来实现父窗口给子窗口传值,父窗口获得子窗口的返回值。
你可能会问,winform没有起始页,它又怎么进mainform 按我们的步骤走了,其实一切都在Program.cs里的Main()函数里,这是程序的入口:
Application.Run(new MainForm()); 这句就是弹出MainForm窗口
进入主窗体,我的信息主体采用DataGridView,这个控件比较诡异,只接受DataTable的数据集,你给它DataSet它还用不了,而且还没分页功能,也没修改删除那种很直接的事件,也没模板,感觉和GridView没的比,此控件还在研究中,跳过!
数据一步步来,为了找点成就感,也为了避开写修改要获取,行,关键字问题,先做个新增窗体,UserAdd:
把控件拖完,突然发现没有验证控件,由于数据要插入数据,如果不验证的话,会读取很多脏数据,综合了下网上的资料,决定采用ErrorProvider报警,用焦点锁定错误控件。
SetErrorControl(tb_user, "用户名不能为空!");灌错误信息e.Cancel = true;把窗体焦点锁定在出错控件
先试试,呵呵,在tb_user控件里点了下,去点别的控件,就点不了了。 记得CauseValidation属性被设置为True(此为默认值)
然后把密码和密码确认也做了,但现在直接点提交,啥都没输,竟然直接通过了,哎,由于鼠标没点进去,所以我们的判断事件根本没执行。所以得在提交按钮再判断次:
人为指定焦点,并中断往下执行,这样就达到了验证的效果了。
至于数据集构筑,和数据处理,那是数据层的事,反正数据层是class类库,这点拿WEB数据层过来就行。
最后说下,web 是 web.config 而 winform是app.config 你把一些字段依然可用存储在 <configuration> 里的<appSettings>,也可用把连接字段放在<connectionStrings>
记得 “引用”System.configration 否则会提示找不到ConfigurationManager 这个在web里自动引用了,不需要手动。
至于项目中的路径 暂时还没找到一个像 server.mapPath()这么好用的相对路径方法。