2012-02-14 3 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 패널의 다른 속성을 무시합니까? – ken2k

+0

지금까지는 전경색 만 사용했습니다. 그러나 미래에는 더 많은 것이있을 수 있습니다. – xsl

1

그냥 MyPanel 생성자에서 설정하십시오. 당신이 그것을 변경하지 못하도록하려는 경우가 아니면

BackColor=Color.Red; 

당신은 override 필요하지 않습니다.

+0

컨트롤이 사용되는 모든 곳이 아닌 한 곳에서 배경색 속성을 제어하려고합니다. – xsl

+0

무슨 소리 야? – ispiro

+0

MyPanel에서 상속 한 모든 컨트롤은 수동으로 속성을 설정하지 않고 고정 된 BackColor를 사용해야합니다. – xsl

관련 문제