Как создать графический интерфейс, который может поместиться в любом разрешении экрана с помощью powershell?
кто-нибудь может помочь мне, как исправить этот графический интерфейс? Я создал графический интерфейс, то мне нужно, чтобы графический интерфейс мог поместиться на любой размер экрана без каких-либо изменений размера. Этот скрипт, когда я выполняю на другом компьютере с другим разрешением, размер меняется.
Пожалуйста, помогите мне. Спасибо
Что я уже пробовал:
Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.Application]::EnableVisualStyles() $Form = New-Object system.Windows.Forms.Form $Form.FormBorderStyle = "FixedDialog" $Width = [System.Windows.Forms.Screen]::AllScreens.bounds.width $Heigt = [System.Windows.Forms.Screen]::AllScreens.bounds.height $Widht_Form = $Width[0] / 3.5 Write-Host "$Widht_Form" $Heigt_Form = $Heigt[0] / 1.8 Write-Host "$Heigt_Form" $Form.Width = $Widht_Form $Form.Height = $Heigt_Form $label1 = New-Object 'System.Windows.Forms.Label' $Yes = New-Object 'System.Windows.Forms.Button' $No = New-Object 'System.Windows.Forms.Button' $Title = New-Object 'System.Windows.Forms.Label' $timer1 = New-Object 'System.Windows.Forms.Timer' $InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState' $Form_Load = { $TotalTime = 10 #in seconds $script:StartTime = (Get-Date).AddSeconds($TotalTime) #Start the timer $timer1.Start() } $Cancel_Click={ } $timer1_Tick={ #Use Get-Date for Time Accuracy [TimeSpan]$span = $script:StartTime - (Get-Date) #Update the display $Form.Text = $label1.Text = "{0:N0}" -f $span.TotalSeconds if ($span.TotalSeconds -le 0) { $timer1.Stop() $Form.Close() } } $Form_StateCorrection_Load= { $Form.WindowState = $InitialFormWindowState } $Form_Cleanup_FormClosed= { try { # $Cancel.remove_Click($Cancel_Click) $Form.remove_Load($Form_Load) $timer1.remove_Tick($timer1_Tick) $Form.remove_Load($Form_StateCorrection_Load) $Form.remove_FormClosed($Form_Cleanup_FormClosed) } catch [Exception] { } } $Form.SuspendLayout() $Form.Controls.Add($label1) $Form.Controls.Add($Yes) $Form.Controls.Add($No) $Form.Controls.Add($Title) $Form.StartPosition = "CenterScreen" $Form.BackColor = "#f6f6f6" $Form.add_Load($Form_Load) $label1.Font = 'Microsoft Sans Serif,20,style=Bold' $Label1.ForeColor = "#176faa" $label1.AutoSize = $true $label1.width = 25 $label1.height = 10 $label1_height = $Heigt_Form / 2.5 $label1_width = $Widht_Form / 2.2 $label1.location = New-Object System.Drawing.Point($label1_width,$label1_height) $Title.Text = "Do you need handling the job?" $Title.ForeColor = "#176faa" $Title.Font = 'Microsoft Sans Serif,16,style=Bold' $Title.AutoSize = $true $Title.width = 25 $Title.height = 10 $Title_height = $Heigt_Form / 5 $Title_width = $Widht_Form / 5 $Title.location = New-Object System.Drawing.Point($Title_width,$Title_height) $Yes.AutoSize = $true $Yes_height = $Heigt_Form * 0.7 $Yes_width = $Widht_Form / 8 $Yes.Location = New-Object System.Drawing.Size($Yes_width,$Yes_height) $Yes.Size = New-Object System.Drawing.Size(90,35) $Yes.Text = "Yes" $Yes.Add_Click( { Write-Host "Call GUI Control" Start-Sleep -s 1 $Form.Close() } ) $No.AutoSize = $true $No_height = $Heigt_Form * 0.7 $No_width = ($Yes_width * 6) - 35 $No.Location = New-Object System.Drawing.Size($No_width,$No_height) $No.Size = New-Object System.Drawing.Size(90,35) # $No.BackColor = "#9fd5f3" $No.Text = "No" $No.Add_Click( { Write-Host "Continue the process" $Form.Close() } ) $timer1.add_Tick($timer1_Tick) $Form.ResumeLayout() #Save the initial state of the form $InitialFormWindowState = $Form.WindowState #Init the OnLoad event to correct the initial state of the form $Form.add_Load($Form_StateCorrection_Load) #Clean up the control events $Form.add_FormClosed($Form_Cleanup_FormClosed) #Show the Form return $Form.ShowDialog()
Я уже пробовал некоторые функции, такие как авторазмер, но это все та же проблема.