ฉันควรทำอย่างไรหากไม่ต้องการเพิ่มคุณสมบัติสาธารณะของส่วนประกอบลงในวิธี InitializeComponent() โดย VS ในระหว่างการออกแบบ ฉันได้ลองเพิ่ม [Browsable(false)] ให้กับแอตทริบิวต์แล้ว แต่ก็ไม่ได้ผลเช่นกัน
รหัสของฉันเป็นดังนี้:
/// <สรุป>
/// กล่องรายการแบบเลื่อนลงประเภทการสื่อสารของตัวควบคุม
/// </สรุป>
CommunicationTypeComboBox คลาสสาธารณะ: ComboBox
-
/// <สรุป>
/// สร้างอินสแตนซ์กล่องรายการ
/// </สรุป>
CommunicationTypeComboBox สาธารณะ ()
-
Items.Add("พอร์ตอนุกรม");
รายการเพิ่ม("TCP");
}
/// <สรุป>
/// รับรายการทั้งหมดในกล่องรายการ
/// </สรุป>
[เรียกดูได้(เท็จ)]
รายการ ObjectCollection ใหม่สาธารณะ
-
รับ { ส่งคืนฐานรายการ;
-
-
วางตัวควบคุมบนแบบฟอร์ม แล้ว VS จะเพิ่มโค้ดบางส่วนให้กับเมธอด InitializeComponent() โดยอัตโนมัติ ส่วนที่เป็นตัวหนา
-
// cmbCommunicationType
-
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = จริง;
this.cmbCommunicationType.Items.AddRange (วัตถุใหม่ [] {
"พอร์ตอนุกรม"
"ทีซีพี"});
this.cmbCommunicationType.Location = System. Drawing.Point ใหม่ (124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = System. Drawing.Size ใหม่ (121, 20);
นี้.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged + = System.EventHandler ใหม่ (this.cmbCommunicationType_SelectedIndexChanged);
มันจะเป็นแบบนี้เมื่อจำนวนการแก้ไขเพิ่มขึ้น มีวิธีแก้ไขอื่นนอกเหนือจากการไม่เพิ่มรายการในตัวสร้างหรือไม่?
this.cmbCommunicationType.Items.AddRange (วัตถุใหม่ [] {
"พอร์ตอนุกรม"
“ทีซีพี”
"พอร์ตอนุกรม"
“ทีซีพี”
"พอร์ตอนุกรม"
“ทีซีพี”
"พอร์ตอนุกรม"
“ทีซีพี”
"พอร์ตอนุกรม"
"ทีซีพี"});
หลังจากทำงานหนักมาหลายวัน ในที่สุดฉันก็พบคลาส DesignOnlyAttribute
ระบุว่าคุณสมบัติสามารถตั้งค่าได้เฉพาะในเวลาออกแบบหรือไม่
สมาชิกที่ทำเครื่องหมายโดยการตั้งค่า DesignOnlyAttribute เป็นจริงสามารถตั้งค่าได้ในเวลาออกแบบเท่านั้น โดยทั่วไป คุณสมบัติเหล่านี้มีอยู่ในเวลาออกแบบเท่านั้น และไม่สอดคล้องกับคุณสมบัติจริงบนวัตถุรันไทม์
สมาชิกที่ไม่มีแอตทริบิวต์ (แอตทริบิวต์) หรือถูกทำเครื่องหมายโดยการตั้งค่า DesignOnlyAttribute เป็นเท็จสามารถตั้งค่าได้ในขณะดำเนินการ ค่าเริ่มต้นเป็นเท็จ
การเพิ่ม DesignOnlyAttribute ให้กับแอตทริบิวต์ Items ของ CommunicationTypeComboBox สามารถแก้ปัญหานี้ได้อย่างสมบูรณ์แบบ
/// <สรุป>
/// รับรายการทั้งหมดในกล่องรายการ
/// </สรุป>
[การออกแบบเท่านั้น(เท็จ)]
รายการ ObjectCollection ใหม่สาธารณะ
-
รับ { ส่งคืนฐานรายการ;
-