디자인 중에 VS가 구성 요소의 일부 공용 속성을 초기화 구성 요소() 메서드에 추가하지 않으려면 어떻게 해야 합니까? 속성에 [Browsable(false)]을 추가하려고 시도했지만 작동하지 않습니다.
내 코드는 다음과 같습니다.
/// <요약>
/// 컨트롤러 통신 유형 드롭다운 목록 상자입니다.
/// </summary>
공개 클래스 CommunicationTypeComboBox : ComboBox
{
/// <요약>
/// 목록 상자 인스턴스를 생성합니다.
/// </summary>
공개 CommunicationTypeComboBox()
{
Items.Add("직렬 포트");
Items.Add("TCP");
}
/// <요약>
/// 목록 상자의 모든 항목을 가져옵니다.
/// </summary>
[탐색 가능(false)]
공개 새 ObjectCollection 항목
{
get { 반환 베이스.항목 }
}
}
컨트롤을 폼에 배치하면 VS가 자동으로 초기화 구성 요소() 메서드에 일부 코드를 추가합니다. 굵은 부분.
//
// cmbCommunicationType
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Items.AddRange(새 개체[] {
"직렬 포트",
"TCP"});
this.cmbCommunicationType.Location = new System.드로잉.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = new System.드로잉.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += new System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
수정 횟수가 늘어나면 이렇게 됩니다. 생성자에 항목을 추가하지 않는 것 외에 다른 방법이 있습니까?
this.cmbCommunicationType.Items.AddRange(새 개체[] {
"직렬 포트",
"TCP",
"직렬 포트",
"TCP",
"직렬 포트",
"TCP",
"직렬 포트",
"TCP",
"직렬 포트",
"TCP"});
며칠간의 노력 끝에 마침내 DesignOnlyAttribute 클래스를 찾았습니다.
디자인 타임에만 속성을 설정할 수 있는지 여부를 지정합니다.
DesignOnlyAttribute를 true로 설정하여 표시된 멤버는 디자인 타임에만 설정할 수 있습니다. 일반적으로 이러한 속성은 디자인 타임에만 존재하며 런타임 개체의 실제 속성과 일치하지 않습니다.
특성(Attribute)이 없거나 DesignOnlyAttribute를 false로 설정하여 표시된 멤버는 런타임에 설정할 수 있습니다. 기본값은 거짓입니다.
CommunicationTypeComboBox의 Items 속성에 DesignOnlyAttribute를 추가하면 이 문제를 완벽하게 해결할 수 있습니다.
/// <요약>
/// 목록 상자의 모든 항목을 가져옵니다.
/// </summary>
[디자인만(false)]
공개 새 ObjectCollection 항목
{
get { 반환 베이스.항목 }
}