【机房重构】一步一步往上爬——小问题大收获

时间:2021-06-25 16:20:24
机房重构进行了半个月之久了,其中遇到了不少问题,有的调试了很久,有的是因为自己的大意。不管怎样,自己还是通过各种问题,收获了许多,成长了许多。这篇博客主要就是对之前遇到的一些问题的集锦,希望能给大家一些帮助,遇到问题,成功地解决问题。
问题一:缺少参数,在U层传参数的时候少写了一个参数。

【机房重构】一步一步往上爬——小问题大收获

解决:根据提示检查U层的该参数,将该参数赋上相应的值。
问题二:进程无法访问文件,文件正由另一个进程使用。

【机房重构】一步一步往上爬——小问题大收获

解决:重新生成解决方案,或者是关闭程序,重新启动程序。
问题三:接口的实现错误,类型无法转换,这是因为名称写错。

【机房重构】一步一步往上爬——小问题大收获

解决:检查工厂中定义的类是否与要实例化的对象是否一致。
问题四:无可用源,源文件与模块生成时的文件不同。这经常发生在我们用F11单步调试的时候。

【机房重构】一步一步往上爬——小问题大收获

解决:重新生成解决方案,或者重新启动程序。
问题五:未能加载文件或程序集“DAL”或它的某一个依赖项,系统找不到指定文件。

【机房重构】一步一步往上爬——小问题大收获

解决:通过更改属性下的编译中输出路径一项,将DAL层的输出路径更改到UI-bin-Debug下。
除了上面的一些常见的问题,另外也积累一些在VB.NET环境编程下的小知识。
知识一:按回车键直接触发确认按钮。
在VB中把Default属性改为TRUE,而在.NET中是将窗体的AcceptButton属性改为你设置的确认键。
知识二:文本框多行显示。
先把文本框的Multline属性设置为TRUE,再利用VBNewLine进行字符串间的连接。下面是一个参考的代码:

txtMessage.Text = "充值卡号:" & recharge.Card & vbNewLine & _
"上次卡内余额:" & Val(Trim(StrExtraMoney)) & vbNewLine & _
"现在卡内余额:" & Val(Trim(strNowMoney)) & vbNewLine & _
"充值日期:" & recharge.RDate & vbNewLine & _
"充值时间:" & recharge.RTime & vbNewLine & _
"充值老师:" & recharge.ID

知识三:限制文本框只能输入数字和返回键。下面是一个参考代码:

Private Sub txtCardNo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCardNo.KeyPress
If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

代码中的IsDigit()函数表示判断输入的字符是否属于十进制数字类别。
知识四:有关DataGridView控件的应用。在利用DataGridView控件显示查询到的数据时,总会遇到这样或那样的不顺眼,数据虽然正确,但用户为了看看数据,还是会给用户造成这样或那样的麻烦。不将就是发现的源动力,这就发现了DataGridView控件的许多小技巧。
1.删除多余的一行。数据显示时,总是会留有一行空白行在最后,看着特别不舒服。这里只需要将其AllowUserToAddRows属性更改为False。
2.设置为只读属性。显示的数据都是用户不可更改的,所以将其ReadOnly属性设置为TRUE,即只读属性就解决问题了。
3.自动调整列宽行高。显示的数据有长有短,有的显示不出来,有的占的位置又大了,所以让其自动调整就是个好办法。

<pre name="code" class="vb">' 让 DataGridView1 的所有列宽自动调整
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
' 让 DataGridView1 的所有行高自动调整DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells) 

 
4.是否可以删除的操作。此控件下默认的是用户可以删除所查询到的数据,而有些情况下,只有查询,并无可执行删除操作的权利。所以就需要将AllowUserToDeleteRows的属性设置为False。
5.删除选中行操作。

For Each r As DataGridViewRow In DataGridView1.SelectedRows 
If Not r.IsNewRow Then
DataGridView1.Rows.Remove(r)
End If
Next

知识五:自动生成注释模板。只需要在每个方法上自动输入三个撇即可。可以相应的写上该方法是执行的什么操作,有无返回值,或返回值属于什么类型,标明时间。
学习心得
学习中遇到问题一定是不可避免的,不论是第一次的机房收费系统,还是这一次的个人机房重构,都有遇到这样或那样的问题。其实这都是我们学习路上的宝藏,很值得我们去挖掘,去寻找。别人遇到的,自己遇到了,大家都可以有所收获;而别人没有遇到的,自己也遇到了,这就是让自己又多了一分收获。所以说,遇到问题没什么大不了的,总会有解决的办法的。
而第一次与这一次机房重构间隔了这么一段时间,自己也是发现自己有不少进步之处。我记得,在第一次机房系统中,不论遇到什么问题,都是一副垂头丧气的样子,感觉自己的路太不顺利了,而且完全不去注重如何解决问题,只是想把问题解决了就万事大吉了,也就糊涂地就过去了。但这一次,机房重构中,自己遇到问题没有不高兴,反而感觉很好,通过巨人的肩膀,自己上网搜索,与同学交流,问题也是一一都得到了解决,自己也是收获满满的。这样一个享受过程的心情在第一次机房中是完全没有的。
态度不一样了,学习的这一阶段下来,效果也是不一样了,机房重构中,不仅学习到了知识,而且与同学的交流多了,与师父的交流也多了,真的是很开心~~