2014-06-26 67 views
1

我正在尝试在PowerShell中制作BlackJack游戏,并以此作为学习该语言的唯一目的。PowerShell - 表单按钮单击右括号外的变量变量

不是我已经开始与形式的测试(选择打/架),发现一个形式测试文件的以下问题:

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null 

$Form = New-Object system.Windows.Forms.Form 
$Form.Text = "Debug." 
$Form.AutoScroll = $True 
$Form.AutoSize = $True 
$Form.AutoSizeMode = "GrowAndShrink" 
$Form.BackColor = "Red" 
# $Form.Icon = [system.drawing.icon]::ExtractAssociatedIcon("C:\Scripts\Private\SVTserv.ico") ### Commented out because other people don't have this file. 
$Form.MinimizeBox = $False 
$Form.MaximizeBox = $False 
$Form.WindowState = "Normal" 
$Form.SizeGripStyle = "Hide" 
$Form.ShowInTaskbar = $False 
$Form.Opacity = 0.7 
$Form.StartPosition = "CenterScreen" 
$Label = New-Object System.Windows.Forms.Label 
$Label.Text = "Debug, trigger: @Null." 
$Label.AutoSize = $True 
$Form.Controls.Add($Label) 


$HButton = New-Object System.Windows.Forms.Button 
$HButton.Location = New-Object System.Drawing.Size(75,120) 
$HButton.Size = New-Object System.Drawing.Size(75,23) 
$HButton.Text = "Debug1" 
$HButton.Add_Click({ 
$X = "DATA.DEBUG.1" 
Write-Host $X - test1. 
$Form.Close() 
Write-Host $X - test2. 
} 
) 
Write-Host $X - test3. 
$Form.Controls.Add($HButton) 

$SButton = New-Object System.Windows.Forms.Button 
$SButton.Location = New-Object System.Drawing.Size(150,120) 
$SButton.Size = New-Object System.Drawing.Size(75,23) 
$SButton.Text = "Debug2" 
$SButton.Add_Click({ 
$X = "DATA.DEBUG.2" 
Write-Host $X - test1. 
$Form.Close() 
Write-Host $X - test2. 
} 
) 
$Form.Controls.Add($SButton) 

$Form.ShowDialog() | Out-Null 
Write-Host $X - test4.  

击中DEBUG1按钮返回以下输出:

- test3. 
DATA.DEBUG.1 - test1. 
DATA.DEBUG.1 - test2. 
- test4. 

我在这里想要做的是设置变量$ X并稍后重新使用它,我需要在它将输出写入test4的部分使用它。

其他有用的信息,可能是我的PowerShell版本:

PS C:\Windows\System32\WindowsPowerShell\v1.0> Write-Host $PSVersionTable.PSVersion 

Major Minor Build Revision 
----- ----- ----- -------- 
4  0  -1  -1  
+0

我不确定这个问题是什么,你能详细说明一下吗?你想要发生什么? – Raf

+0

@Raf变量$ X未写入“Write-Host $ X - test4”。线被触发。用于检查我提供的输出。 – SVT

回答

1

您可以$X一个全局变量 - 与$global:X取代的$X所有实例。

+0

这工作,谢谢。很高兴知道PowerShell使用全局变量。但是,这些$ Global:变量是否会被储存起来用于其他种类? – SVT

+0

你可以在这里找到更多关于范围的信息:http://technet.microsoft.com/en-gb/library/hh847849.aspx – Raf