gpt4 book ai didi

winforms - 如何使用Powershell和WPF构建动态链接列表?

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

我有一个可变长度的数组,其中包含几个网站名称和相应的链接。我将在基于Windows窗体的GUI中显示它们。

该数组将从XML文件中读取,但是看起来像这样

$linklist = @(
("Site 1" , "https://link1.com"),
("Site 2" , "https://link2.com")
)

然后,我有一个名为“mainform”的Windows窗体窗口,并在其中创建每个项目:
$Link1 = New-Object System.Windows.Forms.LinkLabel
$Link1.Text = $sitename
$Link1.Location = New-Object System.Drawing.Point(40,$calculatedPosition)
$Link1.add_Click({ start $sitelink })
$mainform.Controls.Add($Link1)

可以手动为阵列中的每个项目完成此操作-到目前为止,如此简单,因为日志中阵列中有固定数量的项目。

但是我喜欢动态地执行它,以处理具有自定义内容的数组。

我尝试使用动态变量,因为每个LinkLabel需要一个不同的变量名称。
我知道,可以通过 New-Variable Cmdlet创建动态变量名称,但是我不知道如何管理此新变量以构建LinkLabel。

预先感谢您提出的所有有益建议...

最佳答案

我首先要从$linklist数组数组中创建一个有序哈希表,以使事情变得容易:

$linklist = @(
("Site 1" , "https://link1.com"),
("Site 2" , "https://link2.com")
)

# convert the array of arrays into an ordered Hashtable
$linkHash = [ordered]@{}
$linklist | ForEach-Object { $linkHash[$_[0]] = $_[1] }

使用该哈希表,动态创建链接标签并不难:
$linkHash.GetEnumerator() | ForEach-Object {
$lnk = New-Object System.Windows.Forms.LinkLabel
$lnk.Text = $_.Name # set the name for the label
$lnk.Tag = $_.Value # store the link url inside the control's Tag property
$lnk.Location = New-Object System.Drawing.Point(40, $calculatedPosition)
# inside the scriptblock, $this refers to the LinkLabel control itself
$lnk.Add_Click({ Start-Process $this.Tag })
$mainform.Controls.Add($lnk)
$calculatedPosition += 15 # just a guess, you may want different vertical spacing
}

关于winforms - 如何使用Powershell和WPF构建动态链接列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61440188/

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