/ / Scorrere in un riquadro di visualizzazione del flusso durante il trascinamento? - c #, .net, winforms, scroll, flowlayoutpanel

Scorrendo in un riquadro di visualizzazione dei flussi durante il trascinamento? - c #, .net, winforms, scroll, flowlayoutpanel

Ho un'applicazione Windows Form che sta usandoun controllo FlowLayoutPanel per visualizzare le Picture box create dinamicamente. Ho abilitato l'effetto drag drop poiché potrebbero volerci riordinare, funziona bene solo con alcune caselle di immagine (in questo momento lo schermo mostra circa 6) ma se ci sono più provate a trascinare un oggetto sotto il controllo non lo farà scorri, quindi non puoi mettere un'immagine che è attualmente sullo schermo (ad esempio immagine 4) su un'immagine che è al di sotto di ciò che è visibile (ad esempio immagine 13).

Ho visto diversi post in cui utilizzare ScrollControllIntoViewMethod, ho provato in alcuni punti senza successo.

Grazie!

risposte:

2 per risposta № 1

Ecco cosa ho finito per fare.

Crea l'evento sull'evento DragLeave
Ottenere la posizione del controllo
Calcolo dell'altezza del controllo per ottenere il limite inferiore.
controlla la posizione del mouse e se sopra i limiti, cambia lo scroll verticale (o scroll orizzontale) di un valore in un Constant.

private void thumbFlow_DragLeave(object sender, EventArgs e)
{
int BegY_ThumbFlow = this.thumbFlow.FindForm().PointToClient(this.thumbFlow.Parent.PointToScreen(this.thumbFlow.Location)).Y;
int thumbFlowBound_Y = this.thumbFlow.Height + BegY_ThumbFlow;
int mouseY = this.thumbFlow.FindForm().PointToClient(MousePosition).Y;

while (mouseY >= thumbFlowBound_Y)
{
thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value + DRAG_DROP_SCROLL_AMT;
mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y;
thumbFlow.Refresh();
}

while (mouseY <= BegY_ThumbFlow)
{
thumbFlow.VerticalScroll.Value = thumbFlow.VerticalScroll.Value - DRAG_DROP_SCROLL_AMT;
mouseY = thumbFlow.FindForm().PointToClient(MousePosition).Y;
thumbFlow.Refresh();
}
}

Spero che questo aiuti gli altri.