代码之家  ›  专栏  ›  技术社区  ›  Stanislav Vladev

尝试进行智能组合框项目交互

  •  0
  • Stanislav Vladev  · 技术社区  · 6 年前

    我来这里是想知道是否有可能完成我的想法,以节省我编写长代码的时间。

    我有一个包含各种项目的主组合框和一些其他组合框。其中的每个组合框称为“Combo”+主组合框中的项目。 我想知道,当我单击一个项目来隐藏最后使用的组合框并显示链接到此项目的组合框时,我是否可以? 1、隐藏上次使用的组合框 2、显示响应主组合框中所选项目的组合框

    Public Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
    
    Dim SelectedAction As String = "Combo" + ComboBox2.Text
    lastcombobox.visible = false
    ' now to assign to the new combobox
    lastcombobox = (SelectedAction as name of combobox) combobox
    Lastcombobox.visible = true
    End Sub 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Mary    6 年前

    字符串不是控件。字符串是控件的数据类型。名称这是控件对象的Name属性。不能将字符串强制转换为控件,但不会丢失所有内容。在设计时创建其他组合框,并将它们堆叠在彼此的顶部。请注意lastComboBox之前的Static关键字。这将在调用方法之间保持值。您可以通过将此变量设置为类级变量来完成相同的任务。第一次调用该方法时,lastComboBox中将为nothing,因此检查为nothing。控制Find返回一个数组,因此我们必须引用ctl(0)——数组的第一个元素,因为我们知道它只返回一个。

    Private Sub Combo2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Combo2.SelectedIndexChanged
            Dim SelectedAction As String = "Combo" & Combo2.Text
            Static lastComboBox As ComboBox
            If Not IsNothing(lastComboBox) Then
                lastComboBox.Visible = False
            End If
            Dim ctl() As Control = Controls.Find(SelectedAction, True)
            lastComboBox = CType(ctl(0), ComboBox)
            lastComboBox.BringToFront()
            lastComboBox.Visible = True
    End Sub