【发布时间】:2021-09-24 05:50:49
【问题描述】:
我试图在 Powershell 脚本中将 System.Windows.Forms.Label 与另一个 Label 重叠。
到目前为止,我还没有在 Stackoverflow 内外找到任何可行的解决方案。 this thread 中使用透明度的解决方案也不适合我。
下面的 Powershell 脚本可以很好地展示我想要完成的工作。 应该在“嗨妈妈!”的顶部放置一个点。标签。目前,“Hi Mum!”标签部分覆盖了该点,尽管该点已被置于前面。
Add-Type -AssemblyName System.Windows.Forms
$FONT_WINGD = [System.Drawing.Font]::new("Microsoft Wingdings", 18)
$FONT_LARGE_BOLD = [System.Drawing.Font]::new("Microsoft Sans Serif", 18, [System.Drawing.FontStyle]::Bold)
$MyForm = New-Object System.Windows.Forms.Form
$MyForm.BackColor = [System.Drawing.Color]::FromArgb(200,20, 20)
$MyLabel = New-Object system.Windows.Forms.Label
$MyLabel.Text = "HI Mum !"
$MyLabel.Font = $FONT_LARGE_BOLD
$MyLabel.width = 150
$MyLabel.height = 24
$MyLabel.location = New-Object System.Drawing.Point(40,20)
#$MyLabel.BackColor = [System.Drawing.Color]::FromName("Transparent")
$MyLabel.BackColor = [System.Drawing.Color]::FromName("Green")
$MyLabel.SendToBack()
$Dot = New-Object system.Windows.Forms.Label
$Dot.text = [System.Char]::ConvertFromUtf32(0x25CF);
$Dot.ForeColor = [System.Drawing.Color]::FromArgb(155, 0, 79)
#$Dot.BackColor = [System.Drawing.Color]::FromName("Transparent")
$Dot.BackColor = [System.Drawing.Color]::FromName("Blue")
$Dot.width = 15
$Dot.height = 15
$Dot.location = New-Object System.Drawing.Point(56,4)
$Dot.Font = $FONT_WINGD
$Dot.BringToFront()
$MyForm.controls.AddRange(@($MyLabel,$Dot))
$MyForm.ShowDialog()
【问题讨论】:
-
这真的很糟糕。我尝试单独添加它们,以不同的顺序调用 BringToFront()/SendToBack(),然后将它们放到表单上,分配 Z-Index - 没有任何效果。
-
你有哪个 powershell 版本。我的是 5.1.19041.1023 桌面。构建 10.0.19041.1023。显然我们的两个版本的行为相似。
-
名称值 ---- ----- PSVersion 5.1.14409.1018 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14409.1018 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocol序列化版本 1.1.0.1
-
我们还没有收到您的来信.. 任何给定的答案是否解决了您的问题?如果是这样,请通过单击左侧的 ✓ 图标来考虑accepting。这将帮助其他有类似问题的人更轻松地找到它,并有助于激励其他人回答您将来可能遇到的任何问题。
标签: c# powershell