从动态选择另一种形式的组合框

时间:2014-04-14 09:20:04

标签: vb.net winforms datagridview combobox vb.net-2010

我在form1中有一个组合框,在另一个form2中有一个datagridview。 我想用第二种形式的datagridview中的值选择组合框 我在form2中使用下面的代码,它可以工作:

   Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick

            form1.CBO_fournisseur.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString

        Me.Close()

    End Sub

但我想要做的是动态传递表单的名称以避免使用和IFELSE子句枚举我在项目中使用form2的所有表单

Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick

        If formbon2.Name = "FRM_BN_RECEPTION_CUIR" Then
            FRM_BN_RECEPTION_CUIR.CBO_fournisseur.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString

        ElseIf formbon2.Name = "frm_reception_acc_provisoire" Then
            frm_reception_acc_provisoire.CBO_1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString

        End If



        Me.Close()

    End Sub

Screen shot of the 2 forms

1 个答案:

答案 0 :(得分:1)

我想我已经有了你想做的事。我强烈建议您停止使用表单作为共享资源。

在Form2中使用这样的构造函数:

Private ParentFormCombo as Combobox
Public Sub New(ByVal pCmb as Combobox)
  ParentFormCombo = pCmb
End Sub

然后在您的双击中,您只需更改ParentFormCombo的文本

ParentFormCombo.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString

然后你必须停止使用:

FrmList_View.Show()

现在你应该总是使用构造函数(New())。所以请改为:

Dim f As New FrmList_View(CBO_fournisseur)
'or
Dim f As New FrmList_View(CBO_1)
f.Show()