在敲機房的時候遇到的第一個問題肯定就是窗體的顯示問題了,然而不同的情況有不同的解決方案,但是總體上都是在與MDI窗體的特征在做鬥争,在制定 父窗體的情況上有所變化,在容器的選擇上有變化,其他的地方是沒有變化的。另外在資料顯示空間的使用上面是有問題的,是以出此篇部落格以叙述
一、窗體的顯示
在VB6.0的時候我們就學會利用setparent函數來制定特殊容器來作為窗體的“背景”,其實在VB.NET中也是一個原理,首先來看VB.NET中的函數聲明:
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
特别要注意的就是資料類型的變化,是和VB6.0中不一樣,其次就是容器的變化了,在VB.NET中不能用PictureBox來作容器盛放主要控件了,因為他根本不是容器,但是又出現了一個新的容器,就是Panel控件,外表來看就是一個窗體的背景,到是蠻适合MDI父窗體這個灰色的背景的。
然後再這個控件上面畫想要的控件和圖檔,然後以這個Panel為Setparent指定的父容器,就可以顯示控件又可以讓窗體覆寫在上面了,要不後果是這樣的:
,實作後的圖:
代碼:
Form2.MdiParent = Me
Form2.Show()
SetParent(Form2.Handle, Me.Panel1.Handle)
二、DataGridView的資料顯示,標明
雖然在VB6.0和VB.NET中都有這個DataGridView控件,但是用法卻是很不一樣。我個人認為VB.NET中的這個控件比VB6.0中的要好很多,可以直接添加資料源,可以自動調整列寬和行高,可以直接指定資料格數,在屬性框裡面都可以調整,最大的改變就是标題和正式的資料是分隔開的,叫做head。
(1)資料的顯示
在這裡資料的顯示的方法有兩種,一種是在控件上直接綁定資料源,在屬性DataSource裡面可以直接設定,也可以在代碼中直接指定,如果用的是泛型(dataTable)的話,可以直接用List容器(直接)指定資料源,顯示的資料就是獲得的資料表的資料:
Dim TeacherList As New List(Of Model.Work_Log_Info)
DataGridView1.DataSource = TeacherList
但是如果直接指定資料源的話,對于七層可能有違背的地方,況且這樣的表展示出來了之後,也不好看,是以我們需要手動的添加資料,一個格一個格的添加,然後調整高和寬才可以,具體的代碼如下:
dgvRecharge.Rows.Add(Result.Count) '資料表添加行,行數等于資料行數
For i = 0 To Result.Count - 1
dgvRecharge.Rows(i).Cells(0).Value() = Result(i).CardNO '變量寫入行上的每個資料,rows代表行,Cell代表第幾個格
dgvRecharge.Rows(i).Cells(1).Value() = Result(i).ChargeMoney
dgvRecharge.Rows(i).Cells(2).Value() = Result(i).ChargeDate
dgvRecharge.Rows(i).Cells(3).Value() = Result(i).ChargeTime
dgvRecharge.Rows(i).Cells(4).Value() = Result(i).SysOperator
dgvRecharge.Rows(i).Cells(5).Value() = Result(i).Status
dgvRecharge.Rows(i).Cells(6).Value() = Result(i).IsCheck
Next
調整行高列寬:
dgvRecharge.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells '按所有的格調整列寬
dgvRecharge.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells '按所有的格調整行高
(2)行的選擇
首先要設定該表隻能按行選擇:
在控件的屬性裡面就可以調整,然後顯示資料,在資料的顯示後就可以看到資料是整行選擇的然後就是獲得選擇行的資料了,選擇行的資料可以通過一個屬性來獲得:
int rows = dataGridView1.indexrows '獲得選種行的索引
string str = dataGridView1.rows[rows].cells[num].text '擷取第rows行的索引為num列的值
其中這樣的選擇和資料指派的方法是差不多的,隻要獲得了關鍵值了之後就可以随意的操作了。
三、總結
這次的資料顯示和調整列寬,都不是新的知識,隻是舊的知識的再利用,有些細微的改變,隻要心夠細,完全可以自己找出來的,資料的獲得和顯示可能和之前的有些不同,但是都沒有關系,隻要去接觸,就可以得到想要的。