Ist es möglich, eine bestimmte Aktion nach das Resize-Ereignis (des Benutzersteuerelements), zum Beispiel, wenn die Maustaste losgelassen wird, durchzuführen? Ich muß manuell eine innere Kontrolle der Größe und auf jedem einzelnen Abfeuern der Veranstaltung zu tun wäre ganz, hmm, ineffizient ...WinForms - Aktion nach Resize-Ereignis
Antwort
einfach das ResizeEnd
Ereignis verwenden:
private void Form1_ResizeEnd(object sender, EventArgs e)
{
// Your code here
}
Von MSDN:
das ResizeEnd Ereignis wird ausgelöst, wenn der Benutzer beendet eine Form Skalieren, typischerweise durch auf die rechte untere Ecke einen der Ränder oder das Größenzieh ziehen von das Formular, und dann loslassen. Für weitere Informationen Informationen über die Größenänderung Betrieb.
Sehr verlockend und ich würde es wahrscheinlich schon benutzt haben, aber es passiert in der Benutzerkontrolle (ich habe vergessen dies anzugeben, tut mir leid) und ich habe keinen Zugriff auf die Ereignisse des Formulars. – brovar
@brovar: Das ist Quatsch! Jedes Steuerelement verfügt über eine 'ParentForm'-Eigenschaft. Sie haben also alles zugänglich! – leppie
@Warum können Sie nicht einfach eine 'ResizeMeNow()' -Methode zum Benutzersteuerelement hinzufügen und sie beim Ereignis 'ResizeEnd' des Formulars aufrufen? – GenericTypeTea
Vielleicht können Sie das SizeChanged Ereignis verwenden. Aber ich weiß nicht, wie oft oder wann es während der Größenanpassung aufgerufen wird.
Genau wie Resize, immer wieder. – brovar
Sie können fälschen lokalen ResizeEnd wie folgt aus:
public class Dummy:UserControl
{
private readonly Timer _tDelayedResize;
public Dummy()
{
this.Resize += this_Resize;
_tDelayedResize = new Timer();
_tDelayedResize.Interval = 5;
_tDelayedResize.Tick += this_ResizeEnd;
}
void this_Resize(object sender, EventArgs e)
{
_tDelayedResize.Stop();
_tDelayedResize.Start();
}
void this_ResizeEnd(object sender, EventArgs e)
{
_tDelayedResize.Stop();
//Do your ResizeEnd logic here
//...
}
}
Das Intervall kann geändert werden. Je höher es ist, desto mehr Verzögerung wird es nach dem letzten Resize-Ereignis sein.
Es gibt bessere Möglichkeiten, das Steuerungslayout zu erstellen. – leppie
Ich weiß, und ich würde das nicht so machen, aber es ist ein kleiner Sonderfall;) – brovar
Alles falsch mit dem 'Control.Resize' Event? – leppie