設計中にコンポーネントの一部のパブリック プロパティを VS によって InitializeComponent() メソッドに追加したくない場合はどうすればよいですか?属性に [Browsable(false)] を追加しようとしましたが、それも機能しません。
私のコードは次のとおりです:
/// <概要>
/// コントローラーの通信タイプのドロップダウン リスト ボックス。
/// </概要>
パブリック クラス CommunicationTypeComboBox : ComboBox
{
/// <概要>
/// リストボックスのインスタンスを構築します。
/// </概要>
public CommunicationTypeComboBox()
{
Items.Add("シリアルポート");
Items.Add("TCP");
}
/// <概要>
/// リストボックス内のすべての項目を取得します。
/// </概要>
[閲覧可能(false)]
public new ObjectCollection アイテム
{
get { returnbase.Items }
}
}
コントロールをフォームに配置すると、VS は自動的に InitializeComponent() メソッドにコードを追加します。太字部分。
//
// cmbCommunicationType
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Items.AddRange(new object[] {
「シリアルポート」、
"TCP"});
this.cmbCommunicationType.Location = new System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = 新しい System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += new System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
編集回数が増えるとこのようになります。コンストラクターに項目を追加しない以外にこれを回避する方法はありますか?
this.cmbCommunicationType.Items.AddRange(new object[] {
「シリアルポート」、
「TCP」、
「シリアルポート」、
「TCP」、
「シリアルポート」、
「TCP」、
「シリアルポート」、
「TCP」、
「シリアルポート」、
"TCP"});
数日間の苦労の末、ついに DesignOnlyAttribute クラスを見つけました。
プロパティを設計時にのみ設定できるかどうかを指定します。
DesignOnlyAttribute を true に設定することでマークされたメンバーは、設計時にのみ設定できます。通常、これらのプロパティは設計時にのみ存在し、ランタイム オブジェクトの実際のプロパティには対応しません。
属性 (Attribute) を持たないメンバー、または DesignOnlyAttribute を false に設定することでマークされたメンバーは、実行時に設定できます。デフォルトは false です。
CommunicationTypeComboBox の Items 属性に DesignOnlyAttribute を追加すると、この問題を完全に解決できます。
/// <概要>
/// リストボックス内のすべての項目を取得します。
/// </概要>
[デザインのみ(false)]
public new ObjectCollection アイテム
{
get { returnbase.Items }
}