2017-05-20 74 views
0

更新5/21/17。感謝您使用表格的建議。這很有幫助。我其實已經明白了。通過在頂部聲明Dim語句並使其成爲Datagridview類型,我將myinputable變成了全局變量。現在我可以在另一個需要做的事件中關閉它。捕獲VB中的Datagridview中的鼠標點擊等事件

我是新手。我已經在VB 2015中創建了一個Datagridview來捕獲使用中的一堆數據。當用戶完成數據輸入時,我想將單元格值存儲在我的變量中。我不知道如何從我的動態創建的datagridview「myinputable」中捕獲任何事件。我的代碼如下。請幫忙。

私人小組inputmodel() 昏暗提示作爲字符串 昏暗k作爲整數 「 」首先獲取問題標題和目標與方案 ' 提示=‘輸入問題標題:’數 標題=的InputBox (提示) 提示= 「輸入若干標準:」 的NObj =的InputBox(提示) 提示= 「替代的輸入數:」 NALT =的InputBox(提示) '
' 現在創建表 ' 昏暗Myinputable作爲新的DataGridView 昏暗combocol作爲新的DataGridViewComboBoxColumn combocol.Items.AddRange( 「增加」, 「Decreaing」, 「Threashold」)

For k = 1 To 6 
     If k <> 2 Then 
      Dim nc As New DataGridViewTextBoxColumn 
      nc.Name = "" 
      Myinputable.Columns.Add(nc) 
     Else 
      Myinputable.Columns.AddRange(combocol) 
     End If 
    Next k 

    ' now add the rows and place the spreadsheet on the form 

    Myinputable.Rows.Add(nobj - 1) 
    Myinputable.Location = New Point(25, 50) 

    Myinputable.AutoSize = True 
    Me.Controls.Add(Myinputable) 
    FlowLayoutPanel1.Visible = True 

    Myinputable.Columns(0).Name = "Name" 
    Myinputable.Columns(0).HeaderText = "Name" 

    Myinputable.Columns(1).Name = "Type" 
    Myinputable.Columns(1).HeaderText = "Type" 

    Myinputable.Columns(2).Name = "LThresh" 
    Myinputable.Columns(2).HeaderText = "Lower Threshold" 
    'Myinputable.Columns(2).ValueType = co 

    Myinputable.Columns(3).Name = "UThresh" 
    Myinputable.Columns(3).HeaderText = "Upper Threshold" 

    Myinputable.Columns(4).Name = "ABMin" 
    Myinputable.Columns(4).HeaderText = "Abs. Minimum" 

    Myinputable.Columns(5).Name = "ABMax" 
    Myinputable.Columns(5).HeaderText = "Abs. Maximum " 

    Myinputable.Rows(0).Cells(0).Value = "Help" 

    If Myinputable.Capture = True Then 
     MsgBox(" damn ") 
    End If 
    End Sub 
+0

DataGridView主要用於向用戶顯示* data *的* View *。它可以保存數據,但有更好的機制 - 一個DataTable。 - 這也將允許您將數值存儲爲數字類型。不需要任何英雄 - DGV會將數據存儲在DataTable中。 – Plutonix

回答

0

由於@Plutonix建議,應該通過創建一個DataTable啓動。將適當類型的列添加到DataTable,然後將其綁定到網格,即將其分配給網格的DataSource,例如,

Dim table As New DataTable 

With table.Columns 
    .Add("ID", GetType(Integer)) 
    .Add("Name", GetType(String)) 
End With 

DataGridView1.DataSource = table 

將在適當的列會自動添加到網格中,如果它已經沒有任何,或者您也可以在設計中添加列並設置其DataPropertyName告訴他們要綁定到的DataColumn。當用戶在網格中進行更改時,數據將自動推送到底層的DataTable

當你做,你可以通過DataTable訪問數據,甚至很多與單個調用保存到數據庫到數據適配器的Update方法,如果你的願望。