动态更新ComboBox的更好方法是什么?

时间:2014-10-27 06:39:39

标签: vb.net visual-studio combobox visual-studio-2013

我想知道是否有人有建议或提示改进我的代码的以下功能。基本上我正在制作一个更新/修改表单,它从数据库表填充其字段,到目前为止所有内容都很有用,直到我到达组合框。

我有三个,角色,身份和性别。问题是当我加载当前用户的信息时:

    Dim lstDatos As New ArrayList()
    lstDatos = gestorUsuario.consultarUsuario(idUsuario)

    txtNombre1.Text = lstDatos(0)
    txtNombre2.Text = lstDatos(1)
    txtApellido1.Text = lstDatos(2)
    txtApellido2.Text = lstDatos(3)
    cmbGenero.DisplayMember = lstDatos(4)  'HERE
    txtCorreo.Text = lstDatos(5)
    txtCedula.Text = lstDatos(6)
    txtTelefono.Text = lstDatos(7)
    cmbRol.Text = lstDatos(8)        'HERE
    cmbEstado.Text = lstDatos(9)     'And Here

只能选择用户当前的Rol,Estado和Gender,以解决我做出以下问题的方法:

Private Sub updateRol(sender As Object, e As EventArgs) Handles cmbRol.Click

    actualizarComboBox()

End Sub

调用actualizarFunction:

Private Sub actualizarComboBox()

    cmbGenero.Items.Add("Masculino")
    cmbGenero.Items.Add("Femenino")

    cmbEstado.DataSource = gestorUsuario.consultarEstados
    cmbEstado.DisplayMember = "nombre_estado"
    cmbEstado.ValueMember = "id_estado"

    cmbRol.DataSource = gestorRol.consultarRoles
    cmbRol.DisplayMember = "nombre"
    cmbRol.ValueMember = "id_rol"

End Sub

它实际上是诚实的但是......第一次选择comboBox时,你可以在加载其他选项时看到可见的跳转,当我点击组合时它会自动丢失"占位符&#34 ;如果您愿意,可以使用用户的当前信息并直接进入第一个选项。

所以,如果我有:

* B

作为我的用户的当前cmbRol.Text,我点击了ComboBox,它会闪烁一些,然后更改为:

* A -B -C

其中*表示选中或突出显示的选项。 如果有人有任何建议或提示,我将非常感激。非常感谢。

1 个答案:

答案 0 :(得分:1)

替换

 cmbGenero.DisplayMember = lstDatos(4)  'HERE
 cmbRol.Text = lstDatos(8)        'HERE
 cmbEstado.Text = lstDatos(9)     'And Here

为此:

cmbGenero.SelectedItem = lstDatos(4) 'SelectedItem is sufficient because cmbGenero is not binding to Data Base
cmbRol.SelectedValue = lstDatos(8)   'SelectedValue is required because cmbRol and cmbEstado is binding to Data Base
cmbEstado.SelectedValue = lstDatos(9)