gpt4 book ai didi

winforms - 哈希表内的 WinForm

转载 作者:行者123 更新时间:2023-12-03 00:58:10 27 4
gpt4 key购买 nike

我可以在哈希表中设置表单元素:

$Hash = @{}

$Hash.Main = New-Object System.Windows.Forms.Form
$Hash.Main.Left = 0
$Hash.Main.Top = 0
...
$Hash.Label = New-Object System.Windows.Forms.Label
$Hash.Label.Left = 0
$Hash.Label.Top = 0
...
$Hash.Panel = New-Object System.Windows.Forms.Panel
$Hash.Panel.Left = 0
$Hash.Panel.Top = 0
...

我怎样才能在哈希表中写同样的东西?我试着让它好像可以。它有效。但是这种语法正确吗?
$Hash = @{

Main = [System.Windows.Forms.Form] @{

Left = 0
Top = 0
...
}

Label = [System.Windows.Forms.Label] @{

Left = 0
Top = 0
...
}

Panel = [System.Windows.Forms.Panel] @{

Left = 0
Top = 0
...
}
}

谢谢

最佳答案

是的,这个语法是正确的:

Creating Objects from Hash Tables

Beginning in PowerShell 3.0, you can create an object from a hash table of properties and property values.

The syntax is as follows:

[<class-name>]@{
<property-name>=<property-value>
<property-name>=<property-value>

}

This method works only for classes that have a null constructor, that is, a constructor that has no parameters. The object properties must be public and settable.

For more information, see about_Object_Creation.



检查第一个条件(没有参数的构造函数):
[System.Drawing.Font],        ### does not have empty constructor 
[System.Windows.Forms.Form],
[System.Windows.Forms.Label],
[System.Windows.Forms.Panel] |
Where-Object {
'new' -in ( $_ |
Get-Member -MemberType Methods -Static |
Select-Object -ExpandProperty Name ) -and
$_::new.OverloadDefinitions -match ([regex]::Escape('new()'))
} | Select-Object -ExpandProperty FullName

System.Windows.Forms.Form
System.Windows.Forms.Label
System.Windows.Forms.Panel


检查后一个条件(对象属性必须是公共(public)的和可设置的):
[System.Windows.Forms.Form],
[System.Windows.Forms.Label],
[System.Windows.Forms.Panel] |
ForEach-Object {
@{ $_.FullName = (
$_.GetProperties('Instance,Public') | Where-Object CanWrite |
Select-Object -ExpandProperty Name | Sort-Object
)
}
}

Name                           Value
---- -----
System.Windows.Forms.Form {AcceptButton, AccessibleDefaultActionDescription, Acc...
System.Windows.Forms.Label {AccessibleDefaultActionDescription, AccessibleDescrip...
System.Windows.Forms.Panel {AccessibleDefaultActionDescription, AccessibleDescrip...


将上述两个代码片段放在一起是一项微不足道的任务……

关于winforms - 哈希表内的 WinForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59973001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com