2012-02-14 28 views
0

ベースパネルから継承したパネルには、どこで使用されていても固定のBackColorが必要です。 BackColorは、例えば、フォームのDesigner.csファイルに設定されていないコントロールのBackColorが変更されないようにするにはどうすればよいですか?

public class MyPanel 
{ 
    public override Color BackColor 
    { 
     get 
     { 
      return base.BackColor; 
     } 
     set 
     { 
      base.BackColor = Color.Red; 
     } 
    } 
} 

:私のベースパネルは、次のようになります

this.sampleControl.Font = new System.Drawing.Font("Tahoma", 8.25F, 
    System.Drawing.FontStyle.Regular, 
    System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
this.sampleControl.Location = new System.Drawing.Point(0, 0); 
this.sampleControl.Margin = new System.Windows.Forms.Padding(5); 
this.sampleControl.Name = "sampleControl"; 
this.sampleControl.Padding = new System.Windows.Forms.Padding(2, 0, 2, 2); 
this.sampleControl.Size = new System.Drawing.Size(230, 100); 
this.sampleControl.TabIndex = 1; 

は実際にはどこにでも設定は色はありませんが、私はそれは何とかなると仮定しますそれが配置されているパネルのプロパティ。これをどうやって防ぐことができますか?

+1

あなたが見る実際の色は何ですか? – ken2k

+0

親コントロールの背景色、つまり親パネルが青色の場合、このコントロールも青色になります。 – xsl

答えて

2

方法について:

public class MyPanel : Panel 
{ 
    private Color backColor = Color.Red; 

    public MyPanel() 
    { 
     // Set the color once 
     this.BackColor = backColor; 
    } 

    public override Color BackColor 
    { 
     get 
     { 
      return base.BackColor; 
     } 
     set 
     { 
      base.BackColor = backColor; 
     } 
    } 
} 
+0

それは動作します。ありがとうございました。コンストラクタですべてのプロパティを繰り返すよりも、これを行う方法は他にありませんか? – xsl

+0

@xsl Panelの他のプロパティを上書きしますか? – ken2k

+0

これまでは、前景色のみでした。しかし、将来的にはもっとあるかもしれません。 – xsl

1

これをMyPanelコンストラクタに設定するだけです。あなたはそれを他の人が変更できないようにする場合を除き

BackColor=Color.Red; 

あなたはoverrideは必要ありません。

+0

バックカラープロパティを1か所からコントロールしたいのですが、コントロールが使用されている場所ではありません。 – xsl

+0

どういう意味ですか? – ispiro

+0

MyPanelから継承するすべてのコントロールは、手動でプロパティを設定することなく、使用されている場所に関係なく、固定されたBackColorを持つ必要があります。 – xsl

関連する問題