Изменение размера пользовательского элемента управления - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь создать прямоугольник с закругленными углами, но решил начать с чего-то более простого, в данном случае - эллипса. К сожалению, когда я перетаскиваю пользовательский элемент управления на Fprm1.cs [design] и пытаюсь изменить его размер, с настоящим эллипсом ничего не происходит. Только когда я попал в usercontrol [design] и изменил его размер, он изменился. Я был бы признателен, если бы кто-то мог указать, где я ошибся. Спасибо.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace CustomPbar
{
    public partial class Pbar : UserControl
    {
        GraphicsPath path = new GraphicsPath();

        public Pbar()
        {
            InitializeComponent();
            path.AddEllipse(0, 0, this.ClientSize.Width, this.ClientSize.Height);
            this.Region = new Region(path);

            this.BackColor = SystemColors.ControlDarkDark;
        }

        private void MyForm_Layout(object sender, System.Windows.Forms.LayoutEventArgs e)
        {
            if (this.Region != null)
            {
                this.Region.Dispose();
                this.Region = null;
            }

            path.AddEllipse(0, 0, this.Width, this.Height);
            this.Region = new Region(path);
        }
    }
}

1 Ответ

1 голос
/ 13 марта 2012

Попробуйте вызвать его из события Resize:

protected override void OnResize(EventArgs e) {
  using (GraphicsPath gp = new GraphicsPath()) {
    gp.AddEllipse(this.ClientRectangle);
    this.Region = new Region(gp);
  }

  base.OnResize(e);
}
...