你的位置:首页 > ASP.net教程

[ASP.net教程]C#出题库项目的总结(1)


前记:

截止18点05分(4月9号),完成了代码部分的编写,明天争取把文档完成,毕竟在这个上面花的时间太多了,还有单词和书需要背,好吧,不说废话啦,下面进入正题。

 (PS:因为学院的模拟招聘笔试出题和安排耽误了这么几天没上来写,我忏悔)

 

正文:

我使用的开发环境是Vs 2013和Sql server 2012,以下先说窗体设计部分:

1、(mainForm.cs)截图如下

(1)左边为查询题目的条件选择:

  a)上面部分:四个label和四个comboBox。label分别设置其Text对应指示comboBox的意义;comboBox设置其DropDownStyle为DropDownList也就是我们常说的下拉菜单(Ps:该属性一共有三个属性,另外两个为Simple设置之后的功能类似TextBox,DropDown设置之后的功能为DropDownList+Simple)

  b)下面部分:一个Text为“查询”的Button,该控件关联一个click事件,用于连接数据库查询符合对应条件的题目。(Ps:关于事件的绑定有两种常用的快捷方式:1、直接双击对应控件,如此处的Button则会自动绑定click事件;2、右键,打开“属性”,点击“事件”按钮(那个闪电的符号),找到对应的事件,双击则自动绑定对应事件。两者的区别:第一种方法只会绑定最常用的默认的事件,如button对应click,下拉菜单对应change,而第二种方法则可以绑定所有事件)

(2)右边为题目展示部分:

  a)上面部分:一个label和一个RichTextBox。label的Text赋值为"here",文本没有特殊意义,只是方便设计的时候查看label位置;该label用于指示符合条件的题目的总数和用户当前查看的是第几题(输出的格式如:"查询题目总数为【3】个/当前为第【2】个")。因为此处RichTextBox只用于展示信息,即“只读”,故设置其ReadOnly属性值为True;其输出值为四种形式:1、初始化:“请选择搜索的条件...” 2、任一Combobox的值改变后,“请点击查询按钮进行搜索...” 3、查询成功,将相应的题目显示 4、查询失败,提示用户“没有找到对应题目”

  b)下面部分:两个Button,一个Text值为“上一题”,一个Text值为“下一题”。两个控件的功能想必也是清楚明了的,就是在查询成功后,题目数目大于1的情况下,向前或向后调转展示题目。两者在设计的时的条件设置和边界判断,这点在之后的代码部分再详述。

2、登录窗体(loginForm.cs)截图如下:

(Ps:吐个槽,其实并没有登录功能,只是任性想做窗体的调转,结果因为花样作死,还出现个问题弄好久。。。)

(1)上面部分:三个label,展示我们的设计理念,我们的设计理念就是没有理念,对的,就是这样,喵~

(2)下面部分:一个Button绑定click事件,将本窗体隐藏,将mainForm显示出来。因为这个窗体的控件设计简单,就直接把代码和我遇到的那个蛋疼的问题在这里讲述,之后专门讲代码的部分就只涉及mainForm的代码了。

(3)loginForm的代码部分:

代码部分就简单的两句,就是这两句折腾了好半天:

this.hide();new mainForm().show();

遇到的问题是一旦改动代码,再次运行就报错

ho no,妈妈我做错了什么,调了半天,不晓得咋子弄,只有求助外援,大神,求指教~

大神就说了一句,看看任务管理器。好的呢~

查看任务管理器,可以很清楚的看到,虽然关闭了窗体但是程序依然在运行中:

问题是这个问题,但显然这里还有一个更需要问的问题,到底是因为什么会在窗体关闭的时候,程序还在运行呢?

this.hide();//<-妈妈就是它欺负我

loginForm窗体还在运行,因为是设置的为入口的窗体,即为主窗体,所以如果在调转的时候用close()代替hide()会出现闪现然后关闭的效果,而没法将mainForm展示出来

Application.Run(new loginForm());

改正的方法网上有挺多的,我采用的是给mainForm加一个FormClosed事件,语句很简单而且关闭得很彻底

System.Environment.Exit(0);//当关闭mainForm窗体时,退出整个程序

 

总结:

  设计的部分就大概这些,用到的知识基本是原来学习过的内容,这个部分算是一个准备阶段,帮助我回忆知识,也回顾了一些书本上的知识,算是为代码阶段做个热身活动吧,最后就用大神给我说的话做个结尾,调试模式要用好,不然出Bug的锅自己背:p