0

カスタムコントロールはその親に追加されます。親形式の's 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);
    } 
} 
4

2 に答える 2

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);
        }



    } 
于 2012-11-25T10:40:25.633 に答える
0

Boxから継承してみてくださいUserControl

于 2012-11-25T10:31:25.353 に答える