1.主界面为MDI父窗体,要求加载时,将一个子窗体显示出来,子窗体不能有最大最小关闭按钮,连标题也不能用.
去掉标题容易,子窗体的Text的属性为空即可.将子窗体的FormBorderStyle改为None.但是,图中的控制按钮不是我想要的.
MDI父窗体上加上下面这句,就可以去掉.(MenuStrip1是我用到的菜单控件的Name)但是还是有问题,
Me.MainMenuStrip = MenuStrip1
,控制按钮还是存在.将子窗体的ControlBox的属性改为False,表示窗体不要有"控件/系统"菜单框.
2.外观层返回的DataTable类型数据,由于这次设计的是在D层是将所有数据查出,并且没有给字段名起别名.(以前是在D层写的Sql语句中就固定好了)
而我需要的只是其中某些字段,并且希望不要显示数据库中的英文字段,而是中文字段.(我知道一种可以,做个数据库翻译器,将DataTable的字段名全部翻译为中文并返回,我觉得这个挺好的,只是需要再加一张表,以后一定会试着用的)
所以需要在UI层处理,但是由于这种处理太多,所以写成方法.
Public Class frmNewTable
Public Shared Function frmSetNewTable(ByVal dt As DataTable, ByVal strArray(,) As String) As DataTable
Dim intRows As Integer '用于获取数组的行数
'等于数组中的总数/维数,如果是3行2列的,总数为6
intRows = CInt(strArray.Length / strArray.Rank)
Dim intIndex As Integer '用于For循环的计数
Dim strNewArray(intRows - 1) As String '用于最后显示的新的数组,是1维的,给定了大小
For intIndex = 0 To intRows - 1
dt.Columns(strArray(intIndex, 0)).ColumnName = strArray(intIndex, 1)
strNewArray(intIndex) = strArray(intIndex, 1) '给新数组赋值
Next
dt = dt.DefaultView.ToTable(False, strNewArray)
Return dt
End Function
End Class
而使用方法就是如下所有.其中dt是就是DataTable的实例化对象.
'查询购卡信息
dt = faCheckout.QueryBuyCard(cmbUserID.Text.Trim())
'给frmSetNewTable方法的数组赋值.
strArray = {{"cardNo", "卡号"},
{"stuNo", "学号"},
{"registerDate", "日期"},
{"registerTime", "时间"}}
dgvShowBuyCard.DataSource = frmNewTable.frmSetNewTable(dt, strArray)