ผ่านตัวแปรระหว่าง Windows Forms Windows โดยไม่มี ShowDialog ()
เมื่อคุณเขียนโปรแกรมแอปพลิเคชัน Windows Forms คุณจะต้องรับตัวแปรจากหน้าต่างฟอร์มที่สองอย่างสม่ำเสมอเช่นฟอร์มตัวเลือกหรือพรอมต์ค้นหาป๊อปอัพ.
คำแนะนำส่วนใหญ่จะบอกคุณว่าคุณต้องเปิดแบบฟอร์มที่สองด้วย ShowDialog () ซึ่งบล็อกผู้ใช้จากการทำสิ่งอื่นจนกว่าพวกเขาจะปิดหน้าต่างแบบฟอร์มที่สอง สิ่งนี้จะทำงานได้ไม่ดีนักสำหรับกล่องโต้ตอบค้นหา / แทนที่ นอกจากนี้ยังใช้งานได้ไม่ดีกับฟอร์มป๊อปอัปที่กำหนดเอง.
วิธีที่รวดเร็วในการส่งผ่านตัวแปรระหว่างแบบฟอร์มคือการใช้ผู้รับมอบสิทธิ์ คุณสามารถตั้งค่าตัวจัดการเหตุการณ์สำหรับเหตุการณ์การปิดของรูปแบบที่สองและจัดการกับเหตุการณ์ในรูปแบบแรก สิ่งนี้อนุญาตให้คุณจับตัวแปรก่อนที่จะปิดหน้าต่างฟอร์มที่สอง.
สำหรับแบบฝึกหัดนี้เราจะสมมติว่าเรามีสองรูปแบบ:
MainForm
OptionsForm
เราจะสมมติต่อไปว่าเราได้คลิกปุ่มบางประเภทที่เปิดตัวเลือก OptionsForm ด้วยการเรียกเมธอด Show () ทีนี้ลองดูเวทมนต์:
…. บุคคลที่ไม่สำคัญ ... .
OptionsForm theform = new OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();โมฆะส่วนตัว theform_Closing (ผู้ส่งวัตถุ, CancelEventArgs e)
OptionsForm theform = ผู้ส่ง (OptionsForm)
// หยิบตัวแปรจากฟอร์มตัวเลือก แบบฟอร์มตัวเลือกควรตั้งค่าตัวแปรนี้ก่อนที่จะปิดและตัวแปรควรถูกทำเครื่องหมายเป็นสาธารณะ.
string localvar = theform.thestringvariable;
นั่นคือทั้งหมดที่มีให้มัน.