簡體   English   中英

使用Windows窗體在Powershell中PictureBox隱藏的標簽

[英]Label hidden by PictureBox in Powershell using Windows Forms

我對PictureBox有問題。

當我將PictureBox停靠在右上角時,它隱藏了位於表單中心的部分標簽。 如何在PictureBox貼上標簽? 我認為問題出在ImageLabel聲明中的停靠聲明中,這就是為什么它被PictureBox隱藏的原因。

我怎樣才能正確地做到這一點?

表格聲明:

$Form = New-Object System.Windows.Forms.Form
$Form.Text = "Something"
$Form.StartPosition = "CenterScreen"
$Form.Topmost = $True
$Form.BackColor = "White"
$Form.Width = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width 
$Form.Height = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height - 50
#$Form.AutoSize = $True
$Form.AutoSizeMode = "GrowAndShrink"
$Form.ControlBox = $false
$Form.MinimumSize = New-Object System.Drawing.Size(1280,1024)
$Form.MaximumSize = New-Object System.Drawing.Size(1920,1080)

圖片聲明:

$Image = [system.drawing.image]::FromFile("C:\xxx.png")
$pictureBox = new-object Windows.Forms.PictureBox 
$pictureBox.Dock = [System.Windows.Forms.DockStyle]::Right
$pictureBox.BackColor = "Transparent"
#$pictureBox.Anchor = [System.Windows.Forms.AnchorStyles]::Right
$pictureBox.AutoSize = $True
$pictureBox.Image=$Image
$Form.Controls.Add($pictureBox)

標簽聲明:

$redLabel1 = New-Object System.Windows.Forms.Label
$redLabel1.Location = New-Object System.Drawing.Size($Form.Width, $Form.Height)
$redLabel1.AutoSize = $False
$redLabel1.TextAlign = "MiddleCenter"
$redLabel1.Dock = "Fill"
$redLabel1.Text = "Something"
$redLabel1.ForeColor = "Red"
$redLabel1.BackColor = "Transparent"
$Font = New-Object System.Drawing.Font("Arial", 55, [System.Drawing.FontStyle]::Bold)
$redLabel1.Font = $Font
$Form.Controls.Add($redLabel1)

編輯:

BringToFront()方法已經過測試,可以工作50%。 文本不在表單中居中,並且當標簽遇到PictureBox ,文本將自動換行。.我希望該標簽將以某種方式跳過PictureBox ..

屏幕截圖:

在此處輸入圖片說明

有一種稱為Control.BringToFront的方法: https : Control.BringToFront ( v= Control.BringToFront

因此它應該在您的代碼中:

$redLabel1.BringToFront()

我很安靜地確定您的標簽不會被圖片隱藏,但請放開它,這取決於圖像的Z順序-和標簽控件(在示例中的Lost控件中不會顯示):

  • 如果您在第一個控件上fill dock ,然后在第二個控件上right dock ,則第一個控件將僅填充剩余的可用空間。
  • 如果您right dock了第一個控件,然后fill dock第二個控件。 第二個控件將占用第一個控件后面的所有空間

我已經快速修改了Windows-Form包裝器示例,以顯示以下內容:

$Form    = Form-Control Form @{Text = "Dock test"; StartPosition = "CenterScreen"; Padding = 4}
$Table   = $Form  | Form TableLayoutPanel @{RowCount = 2; ColumnCount = 3; ColumnStyles = ("Percent", 50), "AutoSize", "AutoSize"; Dock = "Fill"}
$Panel   = $Table | Form Panel @{Dock = "Fill"; BorderStyle = "FixedSingle"; BackColor = "Teal"} -Set @{RowSpan = 2}
$Dock = ForEach ($i in 1..2) {
    $Button = $Panel | Form Button @{Location = "25, $(75 * $i - 50)";  Size = "50, 50"; BackColor = "Silver"; Enabled = $False; Text = $i}
    $Group  = $Table | Form GroupBox @{Text = "Dock $i"; AutoSize = $True}
    $Flow   = $Group | Form FlowLayoutPanel @{AutoSize = $True; FlowDirection = "TopDown"; Dock = "Fill"; Padding = 4}
    $Radio  = "None", "Top", "Left", "Bottom", "Right", "Fill" | ForEach {
        $Flow | Form RadioButton @{Text = $_; AutoSize = $True; Click = ([ScriptBlock]::Create("`$Dock[$($i - 1)].Button.Dock = `$This.Text"))}
    }
    New-Object PSObject -Property @{Button = $Button; Group = $Group; Flow = $Flow; Radio = $Radio}
}
$Close  = $Table | Form Button @{Text = "Close"; Dock = "Bottom"; Click = {$Form.Close()}} -Set @{ColumnSpan = 2}
$Form.ShowDialog()

僅舉幾個例子:

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

可能的解決方案:

  • 不要停靠標簽,而是放置標簽或使用錨釘(另請參閱: 基座和錨釘之間有什么區別?
  • 使用其他對接組合,例如:圖像right和標簽Bottom

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM