ค้นหาเว็บไซต์

การสร้างกล่องอินพุตแบบกำหนดเอง


ตัวอย่างนี้ใช้กับแพลตฟอร์ม Windows เท่านั้น

เขียนสคริปต์กล่องอินพุตแบบกำหนดเองแบบกราฟิกโดยใช้คุณลักษณะการสร้างแบบฟอร์มของ Microsoft .NET Framework ใน Windows PowerShell 3.0 และรุ่นที่ใหม่กว่า

สร้างกล่องป้อนข้อมูลกราฟิกแบบกำหนดเอง

คัดลอกและวางสิ่งต่อไปนี้ลงใน Windows PowerShell ISE จากนั้นบันทึกเป็นไฟล์สคริปต์ PowerShell (.ps1)

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    $x
}

สคริปต์เริ่มต้นด้วยการโหลดคลาส .NET Framework สองคลาส: System. Drawing และ System.Windows.Forms จากนั้นคุณเริ่มอินสแตนซ์ใหม่ของคลาส .NET Framework System.Windows.Forms.Form ซึ่งมีแบบฟอร์มหรือหน้าต่างเปล่าซึ่งคุณสามารถเริ่มเพิ่มตัวควบคุมได้

$form = New-Object System.Windows.Forms.Form

หลังจากที่คุณสร้างอินสแตนซ์ของคลาส Form แล้ว ให้กำหนดค่าให้กับคุณสมบัติสามประการของคลาสนี้

  • ข้อความ ซึ่งจะกลายเป็นชื่อของหน้าต่าง
  • ขนาด นี่คือขนาดของแบบฟอร์ม หน่วยเป็นพิกเซล สคริปต์ก่อนหน้าจะสร้างแบบฟอร์มที่มีความกว้าง 300 พิกเซล x สูง 200 พิกเซล
  • StartingPosition คุณสมบัติเสริมนี้ตั้งค่าเป็น CenterScreen ในสคริปต์ก่อนหน้า หากคุณไม่เพิ่มคุณสมบัตินี้ Windows จะเลือกตำแหน่งเมื่อเปิดแบบฟอร์ม ด้วยการตั้งค่า ตำแหน่งเริ่มต้น เป็น หน้าจอกลาง คุณจะแสดงแบบฟอร์มตรงกลางหน้าจอโดยอัตโนมัติทุกครั้งที่โหลด
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

จากนั้น สร้างปุ่ม ตกลง สำหรับแบบฟอร์มของคุณ ระบุขนาดและลักษณะการทำงานของปุ่ม ตกลง ในตัวอย่างนี้ ตำแหน่งของปุ่มคือ 120 พิกเซลจากขอบด้านบนของแบบฟอร์ม และ 75 พิกเซลจากขอบด้านซ้าย ความสูงของปุ่มคือ 23 พิกเซล ในขณะที่ความยาวของปุ่มคือ 75 พิกเซล สคริปต์ใช้ประเภท Windows Forms ที่กำหนดไว้ล่วงหน้าเพื่อกำหนดลักษณะการทำงานของปุ่ม

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

ในทำนองเดียวกัน คุณสร้างปุ่ม ยกเลิก ปุ่มยกเลิกคือ 120 พิกเซลจากด้านบน แต่ 150 พิกเซลจากขอบด้านซ้ายของหน้าต่าง

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

จากนั้น ให้ระบุข้อความป้ายกำกับบนหน้าต่างที่อธิบายข้อมูลที่คุณต้องการให้ผู้ใช้ระบุ

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)

เพิ่มการควบคุม (ในกรณีนี้คือกล่องข้อความ) ที่อนุญาตให้ผู้ใช้ระบุข้อมูลที่คุณอธิบายไว้ในข้อความป้ายกำกับของคุณ มีการควบคุมอื่นๆ อีกมากมายที่คุณสามารถใช้ได้นอกเหนือจากกล่องข้อความ สำหรับการควบคุมเพิ่มเติม โปรดดู System.Windows.Forms Namespace

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

ตั้งค่าคุณสมบัติ บนสุด เป็น $true เพื่อบังคับให้หน้าต่างเปิดบนหน้าต่างและกล่องโต้ตอบอื่นๆ ที่เปิดอยู่

$form.Topmost = $true

ถัดไป เพิ่มบรรทัดโค้ดนี้เพื่อเปิดใช้งานแบบฟอร์ม และตั้งค่าโฟกัสไปที่กล่องข้อความที่คุณสร้างขึ้น

$form.Add_Shown({$textBox.Select()})

เพิ่มบรรทัดโค้ดต่อไปนี้เพื่อแสดงฟอร์มใน Windows

$result = $form.ShowDialog()

สุดท้ายนี้ โค้ดภายในบล็อก If จะสั่งให้ Windows ทราบว่าต้องทำอย่างไรกับแบบฟอร์มหลังจากที่ผู้ใช้ระบุข้อความในกล่องข้อความ แล้วคลิกปุ่ม ตกลง หรือกดปุ่ม ป้อน คีย์

if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
    $x = $textBox.Text
    $x
}

ดูเพิ่มเติม

  • GitHub: WinFormsExampleUpdates ของ Dave Wyatt)
  • เคล็ดลับ Windows PowerShell ประจำสัปดาห์: การสร้างกล่องป้อนข้อมูลแบบกำหนดเอง

บทความที่เกี่ยวข้อง