... ยาวเกินไปสำหรับความคิดเห็น ... อาจเพิ่มตัวอย่างโค้ดนี้หาก OP ร้องขอ ...
หากเป็น 'WinForms โปรดเพิ่มแท็ก "WinForms" ให้กับแท็กของคุณ
คุณอาจต้องการชี้แจง: คุณกำลังมองหาวิธีแก้ปัญหาที่นี่ที่จะ "ขยายขนาด" เพื่อครอบคลุมกรณีที่คุณอาจมีการควบคุมมากมายบน UserControl (นับสิบ? ร้อย?) ที่คุณใช้ซ้ำในหลาย ๆ แบบฟอร์ม ซึ่งทั้งหมดนี้ จำเป็นต้องซิงโครไนซ์:
หากคุณกำลังมองหาการปรับขนาด) ฉันคิดว่าคุณจะต้องสำรวจ 'DataSource ตามที่ Asad แนะนำ (โปรดทราบว่าเฉพาะตัวควบคุม WinForms บางตัวเท่านั้น [เช่น ComboBox เป็นต้น] เท่านั้นที่มี 'คุณสมบัติ DataSource) และ 'DataBinding เป็น Jake แนะนำ; คำตอบทั้งสองนั้นชี้ให้คุณเห็นถึงความจำเป็นในการใช้แนวทาง "ระดับสูงกว่า" ในการซิงโครไนซ์สถานะ
สำหรับโซลูชัน "ขนาดเล็กกว่า" คุณอาจพิจารณาเพิ่มไฟล์ "การตั้งค่า" และใช้เป็นที่เก็บสำหรับค่าปัจจุบัน
ไม่ว่าในกรณีใด คุณยังคงต้องยกเหตุการณ์ ... ด้วยการเปลี่ยนแปลงทุกครั้งใน UserControl ปัจจุบันที่มีโฟกัส ... เพื่อทริกเกอร์การอัปเดตการควบคุมในอินสแตนซ์ UserControl อื่น ๆ
หรือขึ้นอยู่กับการออกแบบและข้อกำหนดของคุณ หากคุณสามารถยอมรับว่า UserControl แต่ละรายการไม่ได้อัปเดตทันที : คุณสามารถเลื่อนการทริกเกอร์การอัปเดตได้จนกว่าผู้ใช้จะเปลี่ยนไปใช้แบบฟอร์มอื่น : จากนั้นแบบฟอร์มที่ใช้งานก่อนหน้านี้จะทริกเกอร์ 'ปิดใช้งานเหตุการณ์: ในเหตุการณ์นั้นคุณ สามารถตรวจจับได้ว่าการตั้งค่ามีการเปลี่ยนแปลงหรือไม่ (โดยใช้ "บิตสกปรก" บางชนิดใน UserControl ?) จากนั้นอัปเดต UserControls อื่น ๆ ตามต้องการ: ฉันเดาว่าคุณต้องการการอัปเดตทันที
ข้อดีอีกประการหนึ่งที่จะชี้แจงเพื่อให้ได้คำตอบที่ดีที่สุดที่นี่อาจเป็น: แบบฟอร์มหลายรูปแบบเหล่านี้เป็นอย่างไร โดยแต่ละแบบฟอร์มมีอินสแตนซ์ของ UserControl เดียวกันถูกสร้างขึ้น : มี "แบบฟอร์มหลัก" หนึ่งรายการที่สร้างแบบฟอร์มอื่นทั้งหมดหรือไม่ อินสแตนซ์ของแบบฟอร์ม : หรือนี่คือโมเดล "SDI" ที่สร้างแต่ละฟอร์มโดยแยกจากกัน แบบฟอร์มใดมีคุณสมบัติ Parent ที่กำหนดเป็นค่าที่ไม่ใช่ค่าว่าง (เช่น แบบฟอร์มใดมีแบบฟอร์มอื่นเป็น Parent) หรือไม่
หากคุณต้องการตัวอย่างโค้ดที่ใช้งานได้ของการใช้คลาสคงที่สาธารณะสำหรับโซลูชัน "ขนาดเล็ก" สำหรับคำถามของคุณ "ตามที่ถาม" : เพียงแค่ถามที่นี่แล้วฉันจะโพสต์หนึ่งรายการ: มันจะไม่ "หรูหรา" แต่มัน จะทำงาน :)
person
BillW
schedule
20.02.2010