Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从列表框或设置集合填充datagridview_Vb.net_Datagridview_Listbox - Fatal编程技术网

Vb.net 从列表框或设置集合填充datagridview

Vb.net 从列表框或设置集合填充datagridview,vb.net,datagridview,listbox,Vb.net,Datagridview,Listbox,在我的表单中有listbox(与设置连接的数据)和datagridview。我正在尝试从列表框填充datagridview的第0列。无法在web上找到解决方案,因此我尝试了以下方法: For i As Integer = 0 To ListBox1.Items.Count - 1 DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items Next 结果只是第0列中的一项:“Sy

在我的表单中有listbox(与设置连接的数据)和datagridview。我正在尝试从列表框填充datagridview的第0列。无法在web上找到解决方案,因此我尝试了以下方法:

            For i As Integer = 0 To ListBox1.Items.Count - 1

            DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items

        Next
结果只是第0列中的一项:“System.Windows.Forms.ListBox+ObjectCollection”

很明显,这与设置(listbox中的数据保存的位置)有关,我不知道如何修复它

另外,上面的代码也会从列表框中删除项目

编辑:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    TextBox1.Visible = False
    For Each item As String In My.Settings.Setting
        ListBox1.Items.Add(item.ToString)
        DataGridView1.Columns.Add(("BNK"), "Bank")
        DataGridView1.Columns.Add(("ZR"), "2410")
        DataGridView1.RowHeadersVisible = False
        DataGridView1.Columns(0).Width = 55
        DataGridView1.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleLeft
        DataGridView1.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleLeft

        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim dr As New DataGridViewRow
            DataGridView1.Rows.Add(dr)
            DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)
            DataGridView1.AllowUserToAddRows = False
        Next
    Next
End Sub


这会成功的

For Count = 0 To ListBox1.Items.Count -1 
   DataGridView1.Rows(i).Cells(Count).Value = ListBox1.Items(Count)
Next

试试这个代码。它起作用了

Private Sub Form_Load()
    dim cmd as SqlCommand("Select col1 from tblname",conn)
    dim da as new SqlDataAdapter(cmd)
    dim ds as new dataset
    da.fill(ds)
    Listbox1.datasource=ds
    ListBox1.DisplayMember = "col1"
    ListBox1.ValueMember = "col1"
    For i As Integer = 0 To ListBox1.Items.Count - 1
        Dim dr As New DataGridViewRow
        DataGridView1.Rows.Add(dr)
        DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)
        DataGridView1.AllowUserToAddRows = False
    Next
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dim cmd as new SqlCommand("insert into tblname values('" & textbox1.Text & "')",conn)
cmd.ExecuteNonQuery()
ListBox1.Items.Add(TextBox1.Text)
    For i As Integer = 0 To ListBox1.Items.Count - 1
        Dim dr As New DataGridViewRow
        DataGridView1.Rows.Add(dr)
        DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)
        DataGridView1.AllowUserToAddRows = False
    Next
End Sub

第一次尝试将所有LB项添加到单个cellWorks,第二次加载应用程序后,我收到以下错误:索引超出范围。必须是非。。。除第一项外,列表框中的所有项目都将被删除。项目存储在设置中。您的网格是否有静态的行(在设计时)?否。它是一个空的datagridview。列(两个)以加载形式创建。顺便说一句,我忘了说datagridview在单击“继续”(错误屏幕)后(使用您的代码)填充了剩余的一项。这就是问题所在。由于网格中没有任何行,因此首先必须在for循环中创建一行。接下来,您可以为第一个单元格赋值。是的,但它会在加载时向datagridview添加一个额外的行。另外,我在添加新项目后使用了该代码,因此每个新项目都会向datagridview添加另一行。当我在listbox中添加10个项目时,我将在datagridview中获得10个项目和10个空行。我已编辑了答案…如果它有助于向上投票并将其标记为解决方案,则从空列表框开始:在LB中添加第一个项目,将该值添加到DGV的1行,将第二项添加到LB将添加2行(其中一行包含第二项,第二行为空),第三行添加3行(一行包含项值,两行为空),依此类推。因此,您将同时添加每个列表框项以及gridview单元格值。它是?
    For i As Integer = 0 To ListBox1.Items.Count - 1

        DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)

    Next
Private Sub Form_Load()
    dim cmd as SqlCommand("Select col1 from tblname",conn)
    dim da as new SqlDataAdapter(cmd)
    dim ds as new dataset
    da.fill(ds)
    Listbox1.datasource=ds
    ListBox1.DisplayMember = "col1"
    ListBox1.ValueMember = "col1"
    For i As Integer = 0 To ListBox1.Items.Count - 1
        Dim dr As New DataGridViewRow
        DataGridView1.Rows.Add(dr)
        DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)
        DataGridView1.AllowUserToAddRows = False
    Next
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dim cmd as new SqlCommand("insert into tblname values('" & textbox1.Text & "')",conn)
cmd.ExecuteNonQuery()
ListBox1.Items.Add(TextBox1.Text)
    For i As Integer = 0 To ListBox1.Items.Count - 1
        Dim dr As New DataGridViewRow
        DataGridView1.Rows.Add(dr)
        DataGridView1.Rows(i).Cells(0).Value = ListBox1.Items(i)
        DataGridView1.AllowUserToAddRows = False
    Next
End Sub