2012-11-25 4 views
0

사용자 정의 컨트롤이 부모로 추가됩니다. 부모 형태로 form_lord(). 사용자 정의 컨트롤 페인트 이벤트 (왜 몰라)사용자 정의 컨트롤 페인트 이벤트가 작동하지 않습니다.

코드는 다음과 같이이다 (OnPaint를 이벤트도 발생하지 수있는 사용자 정의 컨트롤에서 중단 점을) 작동하지 않습니다

사용자 지정 컨트롤 :

public class Box : Control 
{ 
    public Rectangle rect; 

    public Box(Rectangle rect) 
    { 
     this.rect = rect; 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     e.Graphics.FillRectangle(new SolidBrush(Color.Chocolate), rect); 
     base.OnPaint(e); 
    } 
} 

public partial class Form1 : Form 
{ 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     Box box = new Box(new Rectangle(100, 100, 100, 130)); 

     this.Controls.add(box); 
    } 
} 
+1

중단 점에 대한 웍 아래이 솔루션? 어떤 조건에서? 귀하의 질문은 많이 알려지지 않았습니다. –

+0

customcontrol의 onpaint에서 중단 점 – SleeplessKnight

+0

rect 값은 (100, 100, 100, 130)이지만 상자 컨트롤의 크기는 (0, 0, 0, 0)입니다. sa_ddam213의 대답은 이것을 설명하고 있지만 설명하지는 않습니다. 컨트롤의 너비와 높이는 rect 값의 너비와 높이와 별개입니다. – LarsTech

답변

1

시도 나

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      Load +=new EventHandler(Form1_Load); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Box box = new Box(new Rectangle(0, 0, 100, 100)); 
      box.Width = 200; 
      box.Height = 200; 
      this.Controls.Add(box); 
     } 

    } 

    public class Box : Control 
    { 
     public Rectangle rect; 

     public Box(Rectangle rect) 
     { 
      this.rect = rect; 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 

      e.Graphics.FillRectangle(new SolidBrush(Color.Chocolate), rect); 
      base.OnPaint(e); 
     } 



    } 
+0

감사합니다. 예, 작동합니다.하지만 혼란 스럽습니다. 너비와 높이 = 200이 작동하지 않기 때문에 rect의 너비와 높이가 100이며 사용자 정의 컨트롤 onpaint – SleeplessKnight

0

Box의 계승을 UserControl에서 시도하십시오. 컨트롤이 폭과 높이를 설정

관련 문제