powershell combobox

Powershell Windows Form Multinivel Combo Box



combobox (1)

Tengo un formulario de Windows construido en powershell que está diseñado para dar 3 comboboxes:

CB1: muestra 5 descripciones de trabajo

CB2: cuando se selecciona cualquier opción de CB1, coincide con $ ComboBox1_SelectedIndexChanged y luego una declaración de cambio

CB3: cuando se selecciona cualquier opción de CB2, se combina con $ ComboBox2_SelectedIndexChanged y luego una declaración de cambio

En esta imagen, he seleccionado "Dirección Comercial" y me muestra el primer partido en la lista "fideicomisos de propiedad de sucursales"

enter image description here

El problema con esto es 2 veces.

  1. No quiero que muestre nada en este segundo cuadro combinado hasta que selecciono uno (detiene usuarios asumiendo valores predeterminados)

  2. Tengo que hacer clic en el resultado y luego volver sobre él para que muestre un resultado en el cuadro combinado final, en este ejemplo muestra "Resultado 1,2,3 correctamente".

ejemplo

Mas preguntas:

  1. No puedo utilizar la propiedad de clasificación en el cuadro combinado como su referencia a un origen de datos, ¿puedo ordenar los datos de otra manera? (ARIZONA)

  2. Si llené las 3 casillas, ¿puedo obtener el formulario para restablecer los cuadros combinados 2 y 3 a espacios en blanco si selecciono una opción diferente en CBO1? (esencialmente restablecer formulario)

    $initialForm = New-Object System.Windows.Forms.Form $initialForm.Size = New-Object System.Drawing.Size(300,300) $descriptions = @("Select Item","Commercial Directorate","DG Directorate","Financial Directorate","Fundraising Directorate","HR Directorate") $ComboBox1_SelectedIndexChanged= { Switch ($comboBox1.text) { "Commercial Directorate" { $envnames = @("Branch Property Trusts Programme") } "DG Directorate" { $envnames = @("Director General","Governance & Administration") } default { $envnames = @() } } $comboBox2.Remove_SelectedIndexChanged($ComboBox2_SelectedIndexChanged) $comboBox2.DataSource = $envnames $ComboBox2.add_SelectedIndexChanged($ComboBox2_SelectedIndexChanged) } $ComboBox2_SelectedIndexChanged= { Switch ($comboBox2.text) { "Branch Property Trusts Programme" { $envnames2 = @("Result1","Result2","Result3") } "Director General" { $envnames2 = @("Result4","Result5") } default { $envnames2 = @() } } $comboBox3.Remove_SelectedIndexChanged($ComboBox2_SelectedIndexChanged) $comboBox3.DataSource = $envnames2 $ComboBox3.add_SelectedIndexChanged($ComboBox2_SelectedIndexChanged) } $comboBox1 = New-Object System.Windows.Forms.ComboBox $comboBox1.Location = New-Object System.Drawing.Point(25, 90) $comboBox1.Size = New-Object System.Drawing.Size(180, 20) $comboBox1.DataSource = $descriptions $ComboBox1.add_SelectedIndexChanged($ComboBox1_SelectedIndexChanged) $comboBox2 = New-Object System.Windows.Forms.ComboBox $comboBox2.Location = New-Object System.Drawing.Point(25, 120) $comboBox2.Size = New-Object System.Drawing.Size(180, 20) $ComboBox2.add_SelectedIndexChanged($ComboBox2_SelectedIndexChanged) $comboBox3 = New-Object System.Windows.Forms.ComboBox $comboBox3.Location = New-Object System.Drawing.Point(25, 150) $comboBox3.Size = New-Object System.Drawing.Size(180, 20) $initialForm.Controls.Add($comboBox1) $initialForm.Controls.Add($comboBox2) $initialForm.Controls.Add($comboBox3) $initialForm.ShowDialog()


  1. Después de establecer el origen de datos, puede hacer:

    $combobox2.Text=""

    1. resuelve este problema también

Mas preguntas:

  1. Puede ordenar su fuente de datos de esta manera:

    $envnames = $envnames | sort

    Esto tiene que hacerse después de asignar los valores a la variable, pero antes de configurarlo como un origen de datos para su cuadro combinado.

  2. Para restablecer sus otros cuadros combinados, puede simplemente configurar el origen de datos en un conjunto vacío al comienzo de su bloque $combobox1_selectedindexchanged :

    $ComboBox1_SelectedIndexChanged= { $comboBox2.DataSource=@() $combobox2.Text = "" $combobox3.DataSource=@() $combobox3.Text = "" .... }

Tenga en cuenta que no trabajo con formularios de Windows, así que eso es exactamente lo que pirateé en 2 minutos, podría no ser la solución óptima