呆呆同學的問題與解答

摘要:呆呆同學的問題與解答

親愛的呆呆同學, 你的需求其實很單純, 不致需要用到虛擬模式的作法. 虛擬模式有其特定的用途, 尤其當資料來源本身沒有運算欄位時, 亦或是您要對資料來源的存取作業作完全掌控的時候, 就可以使用虛擬模式. 虛擬模式的寫法看似複雜, 卻擁有最高的彈性.

以你的需求來說, 程式這樣寫即可:

Option Strict On
Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' 建立資料表
        Dim myTable As New DataTable

        ' 建立「編號」欄位
        myTable.Columns.Add("編號", System.Type.GetType("System.Int32"))
        myTable.Columns("編號").AllowDBNull = False
        myTable.Columns("編號").AutoIncrement = True
        myTable.Columns("編號").AutoIncrementSeed = 1
        myTable.Columns("編號").AutoIncrementStep = 1


       
'
建立「存款」欄位
        myTable.Columns.Add("存款", System.Type.GetType("System.Double"))
        myTable.Columns("存款").AllowDBNull = False


       
'
建立「支出」欄位
        myTable.Columns.Add("支出", System.Type.GetType("System.Double"))
        myTable.Columns("支出").AllowDBNull = False


       
'
建立「餘額」欄位
        myTable.Columns.Add("餘額", _
System.Type.GetType("System.Double"), "存款- 支出")
        ' 將「餘額」欄位設定成一個唯讀欄位
        myTable.Columns("餘額").ReadOnly = True


       
Me.DataGridView1.DataSource = myTable
    End Sub

 


   
Private Sub DataGridView1_DataError(ByVal sender As Object,  _
ByVal
e As System.Windows.Forms.DataGridViewDataErrorEventArgs) _
Handles
DataGridView1.DataError
        MessageBox.Show(e.ToString)
    End Sub
End Class