Как применить свойство AutoSize к пользовательскому элементу управления?

Я хочу для реализации свойства AutoSize в пользовательском элементе управления ( не User Control) таким образом, чтобы он вел себя как другие стандартные элементы управления .NET WinForms, которые реализуют AutoSize (например, CheckBox) в режиме разработки.

Я настроил это свойство, но меня беспокоит то, как элемент управления ведет себя в режиме разработки. его размер по-прежнему можно изменить, что не имеет смысла, поскольку визуальное изменение размера не отражается в свойствах AutoSize и Size, которые я реализовал.

Стандартные элементы управления .NET не позволяют изменять размер (или даже отображать маркеры изменения размера) в режиме разработки, если для параметра AutoSize установлено значение true. Я хочу, чтобы мой элемент управления вел себя таким же образом.

Редактировать: у меня это работает с использованием переопределения SetBoundsCore(), но визуально не ограничиваетизменение размера, когда для AutoSize установлено значение true, он просто имеет тот же эффект; функциональность эквивалентна, но выглядит неестественно.

protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
    if (!this.auto_size)
        this.size = new Size(width, height);
    base.SetBoundsCore(x, y, this.size.Width, this.size.Height, specified);
}

Есть идеи, как сделать это стандартным способом?

5
задан mina 25 March 2012 в 01:33
поделиться