an34mem
Goto Top

ComboBox - Werte erhalten bei direkter Auswahl

Hallo.

Wie kann man bitte (siehe Beispiel) die entsprechende Ausgabe erhalten, sobald man eine Auswahl getroffen hat?
(Ohne ein extra Button, MessageBox etc...)

Zwar bekomme ich z.B mit
$comboBox1.SelectedIndex = 2
meine Ausgabe, aber bei einer Auswahl von z.B. '02 | Test' funktioniert es nicht mehr.

Danke für eure Hilfestellung!

function Beispiel {

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null  
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  

$form1 = New-Object System.Windows.Forms.Form
$comboBox1 = New-Object System.Windows.Forms.ComboBox
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 115
$System_Drawing_Size.Width = 351
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"  
$form1.Text = "Test"  

$comboBox1.DataBindings.DefaultDataSourceUpdateMode = 0
$comboBox1.FormattingEnabled = $True
$comboBox1.Items.Add("01 | Test")|Out-Null  
$comboBox1.Items.Add("02 | Test")|Out-Null  
$comboBox1.Items.Add("03 | Test")|Out-Null  
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 28
$System_Drawing_Point.Y = 30
$comboBox1.Location = $System_Drawing_Point
$comboBox1.Name = "comboBox1"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 21
$System_Drawing_Size.Width = 121
$comboBox1.Size = $System_Drawing_Size
$comboBox1.TabIndex = 0

$form1.Controls.Add($comboBox1)

$comboBox1.SelectedIndex = 0
If ( $comboBox1 -eq '01 | Test' )  
        {
            write-host "01 | Test"  
        }
elseif ( $comboBox1 -eq '02 | Test' )   
		{
			write-host "02 | Test"  
		}
elseif ( $comboBox1 -eq '03 | Test' )  
		{
			write-host "03 | Test"  
		}    

$InitialFormWindowState = $form1.WindowState

$form1.add_Load($OnLoadForm_StateCorrection)

$form1.ShowDialog()| Out-Null

} 
Beispiel

Content-ID: 648773

Url: https://administrator.de/contentid/648773

Ausgedruckt am: 19.12.2024 um 14:12 Uhr

Daemmerung
Daemmerung 06.02.2021 um 13:13:30 Uhr
Goto Top
Moin,

dafür musst du dir die Ereignisse dieser Klasse ansehen und schauen, was am besten für deine Zwecke geeignet ist.

Für dich könnte das Ereignis "selectedValueChanged" in betracht kommen und kannst das dann wie folgt umsetzen:

$ComboBox1.add_selectedValueChanged($selectedValueChanged)
$selectedValueChanged = {
# hier dein Code, was passieren soll, wenn sich der value ändert...
}

Schau dir auch die ComboBox-Klasse mal direkt an:
https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.combobo ...

Viele Grüße
Daemmerung
AN34Mem
AN34Mem 06.02.2021 um 14:54:30 Uhr
Goto Top
Danke für die Info.

Ich habe es mit "selectedValueChanged" versucht, aber bekomme keine Ergebnisse angezeigt.
Werde es noch ein paar Mal versuchen, aber langsam verliere ich die Lust daran...
Daemmerung
Lösung Daemmerung 06.02.2021 um 16:14:34 Uhr
Goto Top
Wie sieht dein COde denn aus?
AN34Mem
AN34Mem 06.02.2021 um 18:42:54 Uhr
Goto Top
Hallo Daemmerung.
Deine Info war ein guter Ansatz. Nochmals danke!

Falls jemand auch sowas sucht, habe ich endlich eine (halbwegs) gute Lösung dafür:

function Beispiel {

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null  
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null  

$form1 = New-Object System.Windows.Forms.Form
$comboBox1 = New-Object System.Windows.Forms.ComboBox
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 115
$System_Drawing_Size.Width = 351
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"  
$form1.Text = "Test"  

$comboBox1.DataBindings.DefaultDataSourceUpdateMode = 0
$comboBox1.FormattingEnabled = $True

$comboBox1.Items.Add("01 | Test")|Out-Null  
$comboBox1.Items.Add("02 | Test")|Out-Null  
$comboBox1.Items.Add("03 | Test")|Out-Null  

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 28
$System_Drawing_Point.Y = 30
$comboBox1.Location = $System_Drawing_Point
$comboBox1.Name = "comboBox1"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 21
$System_Drawing_Size.Width = 121
$comboBox1.Size = $System_Drawing_Size
$comboBox1.TabIndex = 0

$form1.Controls.Add($comboBox1)

$comboBox1.Add_SelectedValueChanged({ selectChanged $diese $_ })

function selectChanged ($sender, $event) 
{ 
	$msg = [System.Windows.Forms.MessageBox]::Show($comboBox1.Text,"Hinweis",0,[System.Windows.Forms.MessageBoxIcon]::Exclamation)   
	write-host $comboBox1.Text

	If ( $comboBox1.Text -eq '01 | Test' )  
        {
            write-host "Hier ist 1"  
        }
		elseif ( $comboBox1.Text -eq '02 | Test' )   
		{
			write-host "Hier ist 2"  
		}
		elseif ( $comboBox1.Text -eq '03 | Test' )  
		{
			write-host "Hier ist 3"  
		}    
}

$InitialFormWindowState = $form1.WindowState

$form1.add_Load($OnLoadForm_StateCorrection)

$form1.ShowDialog()| Out-Null

} 
Beispiel
AN34Mem
AN34Mem 06.02.2021 um 18:59:47 Uhr
Goto Top
P.s. ggf. '$msg' auskommentieren (#$msg) falls nicht gewünscht ...
Gruß