使用按钮将数值控件中的值传递到DataGridView控件中的相应单元格

时间:2015-01-16 21:44:31

标签: vb.net datagridview

我想用一个按钮将四个数字向上/向下控件中的每一个的值移动到DataGridView列/行中。例如,操作员在向上/向下数字控件中设置值,然后单击按钮。然后程序应该向DataGridView添加一个新行,并将Numeric Up / Down控件中的任何值传递到新行的新单元格中。截至目前,我已添加新行的一部分工作以及删除按钮工作(删除DataGridView的最后一行)。现在,如何使用按钮将Numeric控件值传递到DataGridView的新行的单元格中?创建DatGridView的每个新行都有四个单元格,分别对应四个数字向上/向下控件。谢谢。

Private Sub addStep_btn_Click(sender As Object, e As EventArgs) Handles addStep_btn.Click
    LftMtr_Data_Grid.ColumnCount = 4
    LftMtr_Data_Grid.RowCount = LftMtr_Data_Grid.RowCount + 1
    LftMtr_Data_Grid.Columns(0).HeaderText = "  Spindle Speed              (rpm)"
    LftMtr_Data_Grid.Columns(1).HeaderText = "     Accel Rate         (rpm/S)"
    LftMtr_Data_Grid.Columns(2).HeaderText = "     Decel Rate         (rpm/S)"
    LftMtr_Data_Grid.Columns(3).HeaderText = "        Time (S)"
    For Each c As DataGridViewColumn In LftMtr_Data_Grid.Columns
        c.Width = 120
    Next

    Dim rowNumber As Integer = 1
    For Each row As DataGridViewRow In LftMtr_Data_Grid.Rows
        If row.IsNewRow Then Continue For
        row.HeaderCell.Value = "Step " & rowNumber
        rowNumber = rowNumber + 1
    Next

    LftMtr_Data_Grid.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
    rowCount1 = LftMtr_Data_Grid.RowCount
    txtBox1.Text = rowCount1
End Sub

2 个答案:

答案 0 :(得分:0)

尝试以下内容。请注意,您不需要每次都设置列标题,只需在Load()事件中设置一次!

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LftMtr_Data_Grid.ColumnCount = 4
        LftMtr_Data_Grid.Columns(0).HeaderText = "  Spindle Speed              (rpm)"
        LftMtr_Data_Grid.Columns(1).HeaderText = "     Accel Rate         (rpm/S)"
        LftMtr_Data_Grid.Columns(2).HeaderText = "     Decel Rate         (rpm/S)"
        LftMtr_Data_Grid.Columns(3).HeaderText = "        Time (S)"
        For Each c As DataGridViewColumn In LftMtr_Data_Grid.Columns
            c.Width = 120
        Next
        LftMtr_Data_Grid.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
    End Sub

    Private Sub addStep_btn_Click(sender As Object, e As EventArgs) Handles addStep_btn.Click
        Dim values() As Object = {NumericUpDown1.Value, NumericUpDown2.Value, NumericUpDown3.Value, NumericUpDown4.Value}
        Dim index As Integer = LftMtr_Data_Grid.Rows.Add(values)
        LftMtr_Data_Grid.Rows(index).HeaderCell.Value = "Step " & (index + 1)
        LftMtr_Data_Grid.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
    End Sub

    Private Sub delStep_btn_Click(sender As Object, e As EventArgs) Handles delStep_btn.Click
        If LftMtr_Data_Grid.Rows.Count > 0 Then
            LftMtr_Data_Grid.Rows.RemoveAt(LftMtr_Data_Grid.Rows.Count - 1)
        End If
    End Sub

End Class

答案 1 :(得分:0)

我自己想通了。以下是我提出的建议:

Dim rowNumber As Integer = 1
    For Each row As DataGridViewRow In LftMtr_Data_Grid.Rows
        If row.IsNewRow Then Continue For
        row.HeaderCell.Value = "Step " & rowNumber
        LftMtr_Data_Grid.CurrentCell = LftMtr_Data_Grid.Rows(LftMtr_Data_Grid.RowCount - 1).Cells(0)
        LftMtr_Data_Grid.CurrentRow.Cells(0).Value = LftMtr_Speed_Incr.Value
        LftMtr_Data_Grid.CurrentRow.Cells(1).Value = LftMtr_Accel_Incr.Value
        LftMtr_Data_Grid.CurrentRow.Cells(2).Value = LftMtr_Decel_Incr.Value
        LftMtr_Data_Grid.CurrentRow.Cells(3).Value = test_Time_Incr1.Value
        rowNumber = rowNumber + 1
    Next

此应用程序使用空的或部分填充的dataGridView。当用户单击该按钮时,代码在dataGridView中创建一个新行,使新行成为所选行,然后最后使用四个数字向上/向下控件中的值填充新行中的每个单元格(也可能是一个文本框,取决于您的应用程序)。这是直接从我的特定应用程序复制的代码。您可能会因变量名称,标签文本等略有不同。