Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 动态更新组合框的更好方法?_Vb.net_Visual Studio_Combobox_Visual Studio 2013 - Fatal编程技术网

Vb.net 动态更新组合框的更好方法?

Vb.net 动态更新组合框的更好方法?,vb.net,visual-studio,combobox,visual-studio-2013,Vb.net,Visual Studio,Combobox,Visual Studio 2013,我想知道是否有人对改进我代码的以下功能提出了建议或提示。基本上,我正在制作一个更新/修改表单,它从数据库的一个表中填充它的字段,到目前为止,一切都很好,直到我到达组合框 我有三个,角色,地位和性别。问题是,当我像这样加载当前用户的信息时: Dim lstDatos As New ArrayList() lstDatos = gestorUsuario.consultarUsuario(idUsuario) txtNombre1.Text = lstDatos(0)

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

我有三个,角色,地位和性别。问题是,当我像这样加载当前用户的信息时:

    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和性别,以解决以下问题:

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

    actualizarComboBox()

End Sub
它调用以下函数:

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
老实说,它可以工作,但是…第一次选择组合框时,当它加载其他选项时,您可以看到一个可见的跳转,而且当我单击组合时,它会自动丢失用户当前信息的“占位符”(如果您愿意),并直接转到第一个选项

因此,如果我有:

*B

当我的用户当前的
cmbRol.Text
时,我单击组合框,它会闪烁一点并更改为:

*A -B -C

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

更换

 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)

事实上,您需要在FormLoad()上调用
ComboBox()
,然后才能将值设置为currentoption@Nadeem_MK但是,如果我这样做了,并且我不想更改该用户的rol或性别等,那么每次我保存其他字段时,我都必须重新为他/她分配这些选项。哦,这意味着性别可能为空?在这种情况下,您仍然可以添加一个通用值作为列表中的第一项,例如“选择选项”之类的。