การสร้างกล่องอินพุตแบบกำหนดเอง
ตัวอย่างนี้ใช้กับแพลตฟอร์ม 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 ประจำสัปดาห์: การสร้างกล่องป้อนข้อมูลแบบกำหนดเอง