2015-04-25 44 views
0

我正在嘗試在設置了兩個文本字段的表單中創建一個下拉框。但是,當我嘗試將下拉列表添加到表單時,它會更改結束值,即使我沒有更改類型或答案,它也會更改它返回的值。原代碼我寫的,通過完美的運行是:Exchange PowerShell下拉問題

function button ($title,$mailbx, $WF, $TF) { 

###################Load Assembly for creating form & button###### 

[void][System.Reflection.Assembly]::LoadWithPartialName(「System.Windows.Forms」) 
[void][System.Reflection.Assembly]::LoadWithPartialName(「Microsoft.VisualBasic」) 

#####Define the form size & placement 

$form = New-Object 「System.Windows.Forms.Form」; 
$form.Width = 750; 
$form.Height = 500; 
$form.Text = $title; 
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen; 

##############Define text label1 
$textLabel1 = New-Object 「System.Windows.Forms.Label」; 
$textLabel1.Left = 25; 
$textLabel1.Top = 15; 

$textLabel1.Text = $mailbx; 

##############Define text label2 

$textLabel2 = New-Object 「System.Windows.Forms.Label」; 
$textLabel2.Left = 25; 
$textLabel2.Top = 50; 

$textLabel2.Text = $WF; 

##############Define text label3 

$textLabel3 = New-Object 「System.Windows.Forms.Label」; 
$textLabel3.Left = 25; 
$textLabel3.Top = 85; 

$textLabel3.Text = $TF; 

############Define text box1 for input 
$textBox1 = New-Object 「System.Windows.Forms.TextBox」; 
$textBox1.Left = 150; 
$textBox1.Top = 10; 
$textBox1.width = 200; 

############Define text box2 for input 

$textBox2 = New-Object 「System.Windows.Forms.TextBox」; 
$textBox2.Left = 150; 
$textBox2.Top = 50; 
$textBox2.width = 200; 

############Define text box3 for input 

$textBox3 = New-Object 「System.Windows.Forms.TextBox」; 
$textBox3.Left = 150; 
$textBox3.Top = 90; 
$textBox3.width = 200; 

#############Define default values for the input boxes 
$defaultValue = 「」 
$textBox1.Text = $defaultValue; 
$textBox2.Text = $defaultValue; 
$textBox3.Text = $defaultValue; 

#############define OK button 
$button = New-Object 「System.Windows.Forms.Button」; 
$button.Left = 360; 
$button.Top = 85; 
$button.Width = 100; 
$button.Text = 「Ok」; 

############# This is when you have to close the form after getting values 
$eventHandler = [System.EventHandler]{ 
$textBox1.Text; 
$textBox2.Text; 
$textBox3.Text; 
$form.Close();}; 

$button.Add_Click($eventHandler) ; 

#############Add controls to all the above objects defined 
$form.Controls.Add($button); 
$form.Controls.Add($textLabel1); 
$form.Controls.Add($textLabel2); 
$form.Controls.Add($textLabel3); 
$form.Controls.Add($textBox1); 
$form.Controls.Add($textBox2); 
$form.Controls.Add($textBox3); 
$ret = $form.ShowDialog(); 

#################return values 

return $textBox1.Text, $textBox2.Text, $textBox3.Text 
} 

$return= button 「Enter Info」 「First Name」 「Last Name」 「Email Address」 
$return2 = ($return[0] + " " + $return[1]) 
$return3 = ($return[0] + "." + $return[1]) 
$return4 = $return[0] + "." + $return[1] + "$return[2]" 


New-Mailbox -Alias $return3 -Name $return2 -FirstName $return[0] -LastName $return[1] -UserPrincipalName $return4 -Password (ConvertTo-SecureString -String '[email protected]' -AsPlainText -Force) -ResetPasswordOnNextLogon $true 
Set-User -Identity $return3 -StreetAddress '1600 Pennsylvania Ave NW' -City 'Washington' -StateOrProvince 'D.C.' -PostalCode '20500' -Phone '202-456-1111' -Fax '202-456-2461' 

下拉代碼我是

######################## 

# Edit This item to change the DropDown Values 

[array]$DropDownArray = "@yahoo.com", "@gmail.com", "@lewisJ.com" 

# This Function Returns the Selected Value and Closes the Form 

function Return-DropDown { 

$Choice = $DropDown.SelectedItem.ToString() 
} 

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 




$DropDown = new-object System.Windows.Forms.ComboBox 
$DropDown.Location = new-object System.Drawing.Size(400,10) 
$DropDown.Size = new-object System.Drawing.Size(130,30) 

ForEach ($Item in $DropDownArray) { 
$DropDown.Items.Add($Item) 
} 

$Form.Controls.Add($DropDown) 

$DropDownLabel = new-object System.Windows.Forms.Label 
$DropDownLabel.Location = new-object System.Drawing.Size(10,10) 
$DropDownLabel.size = new-object System.Drawing.Size(100,20) 
$DropDownLabel.Text = "Items" 
$Form.Controls.Add($DropDownLabel) 

$Button = new-object System.Windows.Forms.Button 
$Button.Location = new-object System.Drawing.Size(100,50) 
$Button.Size = new-object System.Drawing.Size(100,20) 
$Button.Text = "OK" 
$Button.Add_Click({Return-DropDown}) 
$form.Controls.Add($Button) 

我想擁有它,所以如果我輸入名字爲奔,姓作爲Don,並使用下拉功能並選擇@ gmail.com。它會返回這些值。當我試圖合併這兩個代碼時,它將所有值更改爲:

System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d5 0a3a System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d5 0a3a System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d5 0a3a0 

任何人都知道如何使此下拉正確?

+0

歡迎回來泰勒。所以,下拉框中的返回值應該是'@ gmail.com',沒有其他的東西? – Matt

+0

嘿馬特!很高興再次見到你。應該有3個值。 $ return [0]應該是第一個名字。 $ return [1]應該是最後一個名字。我試圖讓第三個值成爲3個下拉選項之一(@ gmail.com,@ yahoo.com,@ msn.com)。但是,當我們輸入下拉框的代碼時,它將返回上面列出的值。 –

+0

對於初學者,您需要在下拉代碼中再次使用'[void]'來啓動'[System.Reflection.Assembly]''。除非這是一個複製粘貼錯誤 – Matt

回答

0

似乎你再一次需要從代碼中的方法中排除一些返回值。如果你看一下TechNet的列表框(是的,我知道我們有一個下拉)你會看到,在上面排尿

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 

的你還必須解決Add方法爲好。

[void]$DropDown.Items.Add($Item) 

這應該確保您的退貨是你想要的。從下拉菜單中選擇的值可能仍然存在問題,但這會讓您朝正確的方向發展。