Ich möchte eine AutoSize-Eigenschaft in einem benutzerdefinierten Steuerelement (nicht User Control) implementieren, so dass es wie andere standardmäßige .NET WinForms-Steuerelemente verhält, die AutoSize (ala CheckBox) im Entwurfsmodus implementieren.Wie kann ich eine AutoSize-Eigenschaft für ein benutzerdefiniertes Steuerelement implementieren?
Ich habe die Eigenschaft eingerichtet, aber es ist die Art, wie sich die Steuerung im Entwurfsmodus verhält, die mich stört. es kann immer noch in der Größe geändert werden, was nicht sinnvoll ist, weil die visuelle Größenänderung nicht in den AutoSize und Size-Eigenschaften, die ich implementiert habe, widergespiegelt wird.
Standard-.NET-Steuerelemente erlauben keine Größenänderung (oder sogar Größenänderungskennzeichen anzeigen) im Entwurfsmodus, wenn AutoSize wahr ist. Ich möchte, dass sich meine Kontrolle auf die gleiche Weise verhält.
bearbeiten: Ich habe es arbeiten, um die SetBoundsCore() überschreiben verwenden, aber es nicht visuell beschränken ein Resize wenn Autosize auf true gesetzt ist, es hat genau die gleiche Wirkung; die Funktionalität ist gleichwertig, aber es fühlt sich unnatürlich an.
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);
}
Irgendwelche Ideen, dies auf die übliche Weise zu tun?
Welche UI-Bibliothek verwenden Sie? Winforms? WPF? ASP.NET? Etwas anderes? – svick
Winforms, bearbeitet in =] – mina
hast du versucht, ein sizechanged-Event hinzuzufügen und deine Resize-Logik dort zu platzieren? – Oztaco