ฉันใช้ Visual Studio เพื่อสร้างแอปพลิเคชัน GUI ใน C # กล่องเครื่องมือทำหน้าที่เป็นพาเล็ตส่วนประกอบที่ดีที่ทำให้ฉันสามารถลากและวางปุ่มและองค์ประกอบอื่น ๆ (เพื่อความชัดเจนฉันจะพูดว่าปุ่มเมื่อใดก็ตามที่ฉันหมายถึง "การควบคุม") บนแบบฟอร์มของฉันซึ่งทำให้รูปแบบคงที่ค่อนข้างง่าย อย่างไรก็ตามฉันพบปัญหาสองประการ:
- การสร้างปุ่มในตอนแรกนั้นเป็นการทำงานมากมาย เมื่อฉันมีรูปแบบที่ไม่คงที่ (เช่นปุ่มหรือตัวควบคุมอื่น ๆ จะถูกสร้างขึ้นในเวลาทำงานตามสิ่งที่ผู้ใช้ทำ) ฉันไม่สามารถใช้จานสีได้เลย แต่ฉันต้องสร้างแต่ละปุ่มด้วยตนเองโดยการเรียกตัวสร้างในวิธีการใด ๆ ที่ฉันใช้แล้วเริ่มต้นด้วยตนเองโดยการระบุความสูงของปุ่มความกว้างตำแหน่งป้ายชื่อตัวจัดการเหตุการณ์และอื่น ๆ นี่เป็นเรื่องน่าเบื่ออย่างยิ่งเพราะฉันต้องเดาพารามิเตอร์เครื่องสำอางเหล่านี้โดยไม่สามารถดูว่าแบบฟอร์มจะเป็นอย่างไรและมันยังสร้างรหัสซ้ำ ๆ กันหลายบรรทัดสำหรับแต่ละปุ่ม
- การทำให้ปุ่มทำบางสิ่งก็เป็นเรื่องที่ต้องทำเยอะ การรับมือกับเหตุการณ์ในแอปพลิเคชั่นเต็มรูปแบบเป็นความเจ็บปวดอย่างมาก วิธีเดียวที่ฉันรู้วิธีการทำเช่นนี้คือการเลือกปุ่มไปที่แท็บกิจกรรมในคุณสมบัติคลิก
OnClick
เหตุการณ์เพื่อสร้างเหตุการณ์ในForm
รหัสของจากนั้นกรอกเนื้อหาของเหตุการณ์ เนื่องจากฉันต้องการแยกลอจิกและการนำเสนอตัวจัดการเหตุการณ์ของฉันทั้งหมดจึงกลายเป็นการเรียกใช้บรรทัดเดียวไปยังฟังก์ชันตรรกะทางธุรกิจที่เหมาะสม แต่การใช้ปุ่มนี้สำหรับปุ่มจำนวนมาก (เช่นลองนึกภาพจำนวนปุ่มที่มีอยู่ในแอปพลิเคชั่นเช่น MS Word) ทำให้รหัสของฉันสกปรกForm
ด้วยวิธีการจัดการเหตุการณ์สำเร็จรูปจำนวนมากและยากที่จะรักษาสิ่งนี้
เนื่องจากสิ่งเหล่านี้โปรแกรม GUI ใด ๆ ที่ซับซ้อนกว่า Hello World จึงทำไม่ได้จริง ๆ สำหรับฉัน เพื่อความชัดเจนฉันไม่มีปัญหาใด ๆ ที่เกี่ยวข้องกับความซับซ้อนในโปรแกรมที่ฉันเขียนซึ่งมี UI น้อยที่สุด - ฉันรู้สึกว่าฉันสามารถใช้ OOP ด้วยความสามารถในระดับที่เป็นธรรมเพื่อจัดโครงสร้างรหัสตรรกะทางธุรกิจของฉันอย่างเรียบร้อย แต่เมื่อพัฒนา GUI ฉันก็ติดอยู่ ดูเหมือนน่าเบื่อมากที่ฉันรู้สึกเหมือนฉันกำลังสร้างวงล้อใหม่และมีหนังสือเล่มหนึ่งอธิบายถึงวิธีการทำ GUI อย่างถูกต้องที่ฉันไม่ได้อ่าน
ฉันพลาดอะไรไปรึเปล่า? หรือผู้พัฒนา C # ทุกคนแค่ยอมรับรายการตัวจัดการเหตุการณ์ซ้ำ ๆ และรหัสสร้างปุ่มที่ไม่มีที่สิ้นสุด
เป็นคำใบ้ (หวังว่ามีประโยชน์) ฉันคาดหวังว่าคำตอบที่ดีจะพูดถึง:
- การใช้เทคนิค OOP (เช่นรูปแบบจากโรงงาน) เพื่อทำให้การสร้างปุ่มซ้ำง่ายขึ้น
- การรวมตัวจัดการเหตุการณ์จำนวนมากเข้ากับวิธีการเดียวที่ตรวจสอบ
Sender
เพื่อพิจารณาว่าปุ่มใดที่เรียกว่าปุ่มนั้นและทำงานตามนั้น - XAML และการใช้ WPF แทน Windows Forms
คุณไม่ต้องพูดถึงสิ่งเหล่านี้แน่นอน เป็นเพียงการคาดเดาที่ดีที่สุดสำหรับคำตอบที่ฉันกำลังมองหา