2012-11-25 103 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's onpaint處的斷點 – SleeplessKnight

+0

您的矩形值爲(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

thanks.yes,它工作。但我很困惑。因爲我認爲寬度和高度= 200不起作用,矩形的寬度和高度是100定義在自定義控件onpaint – SleeplessKnight

0

嘗試從UserControl繼承Box