È possibile eseguire un'azione specifica dopo l'evento di ridimensionamento (del controllo utente), ad esempio quando viene rilasciato il pulsante del mouse? Ho bisogno di ridimensionare manualmente un controllo interno e farlo su ogni monocottura della manifestazione sarebbe abbastanza, hmm, inefficiente ...WinForms - azione dopo l'evento di ridimensionamento
risposta
Basta utilizzare l'evento ResizeEnd
:
private void Form1_ResizeEnd(object sender, EventArgs e)
{
// Your code here
}
Da MSDN:
l'evento ResizeEnd viene generato quando l'utente termina ridimensionare una forma, tipicamente trascinando uno dei bordi o il riquadro di ridimensionamento situata sul nell'angolo inferiore destro il modulo, e quindi rilasciandolo. Per ulteriori informazioni su sull'operazione di ridimensionamento .
Molto allettante e probabilmente l'avrei già usato, ma sta accadendo nel controllo utente (ho dimenticato di specificarlo, scusa) e non ho accesso agli eventi del modulo. – brovar
@brovar: Questo è baloney! Ogni controllo ha una proprietà 'ParentForm'. Quindi in effetti hai tutto ciò che è accessibile! – leppie
@Perché non è sufficiente aggiungere un metodo 'ResizeMeNow()' al controllo utente e chiamarlo nell'evento 'ResizeEnd' del modulo? – GenericTypeTea
Forse è possibile utilizzare l'evento SizeChanged. Ma non so quanto spesso o quando viene chiamato durante il ridimensionamento.
Proprio come Ridimensiona, di volta in volta. – brovar
È possibile simulare una ResizeEnd locale come questo:
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
//...
}
}
L'intervallo può essere modificato. Più è alto il ritardo dopo l'ultimo evento di ridimensionamento che sarà.
Esistono modi migliori per eseguire il layout del controllo. – leppie
Lo so e non lo farei in questo modo, ma è un piccolo caso speciale;) – brovar
Qualcosa non va con l'evento 'Control.Resize'? – leppie