1
出于某种原因,我有问题试图从数据网格组合框单元格中获取值。这是我单击按钮时得到的错误:vb.net 2015年:如何从datagridviewcomboboxcell获取价值?
System.ArgumentOutOfRangeException:'索引超出范围。必须是非负面的,并且小于收藏的大小。“
我试图通过引用行和列以及组合框名称来获取值。
我敢肯定,这是对你最容易解决,所以任何帮助,将不胜感激:-)
我删除了标签和文本框的代码,因为他们工作正常,并没有想要使代码不再需要。
Imports System.Windows.Forms
Public Class Custom_Tab_Page
Inherits TabPage
Private dynamic_Button As New Button
Private cdgv As New DataGridView
Private gridComboBoxDays As New DataGridViewComboBoxCell
Private dynamic_Tab_Page As New TabPage
Public Sub New(ByVal name As String)
Me.Text = name
INITIALIZE_TEXTBOX()
INITIALIZE_BUTTON()
InitializetDataGridView()
End Sub
Protected Sub INITIALIZE_BUTTON()
dynamic_Button = New Button
With dynamic_Button
.Top = 10
.Left = 190
.Visible = True
.AutoSize = True
.Text = "Calculate"
AddHandler .Click, AddressOf Button_Click
End With
Me.Controls.Add(dynamic_Button)
End Sub
Protected Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
If dynamic_Label IsNot Nothing Then
With dynamic_Textbox
.Text = cdgv.Rows(0).Cells(0).Value
End With
End If
End Sub
Private Sub InitializetDataGridView()
Dim cdgv = New DataGridView()
With cdgv
.Top = 200
.Left = 200
.RowHeadersVisible = False
.ColumnCount = 3
.RowCount = 2
.ScrollBars = ScrollBars.None
.ColumnHeadersHeight = 63
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
.AllowUserToAddRows = False
.RowsDefaultCellStyle.NullValue = 0.ToString
End With
Dim gridComboBoxDays = New DataGridViewComboBoxCell
For x As Integer = 0 To 31
gridComboBoxDays.Items.Add(x.ToString) 'Populate the Combobox
Next
Dim gridComboBoxHours As New DataGridViewComboBoxCell
For x As Integer = 0 To 23
gridComboBoxHours.Items.Add(x.ToString) 'Populate the Combobox
Next
Dim gridComboBoxMinutes As New DataGridViewComboBoxCell
For x As Integer = 0 To 59
gridComboBoxMinutes.Items.Add(x.ToString) 'Populate the Combobox
Next
For Loop_Counter As Integer = 0 To cdgv.ColumnCount - 1
cdgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
cdgv.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
cdgv.Columns(Loop_Counter).Width = 65
Next
'
' Set The header values based on units selected
'
cdgv.Columns(0).HeaderCell.Value = "Time Since" & vbCrLf & "Last Flight" & vbCrLf & "(days)"
cdgv.Columns(1).HeaderCell.Value = "Time Since" & vbCrLf & "Last Flight" & vbCrLf & "(hours)"
cdgv.Columns(2).HeaderCell.Value = "Time Since" & vbCrLf & "Last Flight" & vbCrLf & "(minutes)"
'
' Set the overall height And width of the dgv_Gases_Used
'
cdgv.Width = cdgv.Columns(0).Width + cdgv.Columns(1).Width + cdgv.Columns(2).Width + 3
cdgv.Height = cdgv.RowCount * cdgv.RowTemplate.Height + cdgv.ColumnHeadersHeight
'
cdgv.Item(0, 0) = gridComboBoxDays
cdgv.Item(1, 0) = gridComboBoxHours
cdgv.Item(2, 0) = gridComboBoxMinutes
Me.Controls.Add(cdgv)
End Sub
End Class
哈迪,即采取了错误消息的照顾,但它不r即使在我从组合框中选择一个数字时也会产生一个值。 – Rob
@Rob我会检查它 – Hadi
@Rob我更新了我的答案,并添加了一些有用的链接,希望这个帮助你 – Hadi