[C#, .Net] AutoscrollPosition setten werkt niet

Pagina: 1
Acties:

  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
Dit is een simpele vraag maar toch wel lastig denk ik. Als ik op de middelsmuis klik en vervolgens deze inhoud wil ik dat de het venster met de muis meebeweegt.
Nu wordt er eerst op de mousedown event een boolean op true gezet als de middelstemuisknop wordt ingevoerd. Vervolgens wordt er een originele muislokatie aangemaakt van uit de mousedown eventargs. Als dan vervolgens de muis wordt bewogen(mousemove) wordt de volgende code uitgevoerd.
Dit werkt goed, mits de tpUML.AutoscrollPosition(Dit is de tabpage met ScrollBars) bij 0,0 begon, dus IsEmpty staat dan op true.
Als de AutoScrollPosition dus niet leeg is en wat verder naar beneden staat dan wordt hij bij deze regel: " tpUML.AutoScrollPosition = _moveViewScroll;" op 0,0 gezet. Hier ben ik achter gekomen met de debugger. Vervolgens doet hij het dan wel weer goed.

code:
1
2
3
4
5
_pointScroll = tpUML.AutoScrollPosition;
_pointScroll.X += (e.Location.X - _pointScrollOriginal.X);
_pointScroll.Y += (e.Location.Y - _pointScrollOriginal.Y);
// hier gaat het dus mis maar alleen als AutoScrollPosition niet leeg is
tpUML.AutoScrollPosition = _pointScroll;


Het gaat er dus om dat wanneer AutoScrollPosition een waarde bevat hij op leeg wordt gezet. Wanneer AutoscrollPosition leeg is en dit wordt doorlopen heeft hij geen problemen. Ik heb al vanalles geprobeerd, maar volgens mij is het een klein iets wat ik over het hoofd zie.

[ Voor 25% gewijzigd door CR35 op 30-03-2007 02:08 . Reden: Verduidelijking/opbouw van zinnen aangepast. ]


  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
Ik heb het voorelkaar gekregen.

Het probleem is dat ScrollbarPostion een point is wat in negatieve waarden zijn positie uitdrukt. Maar als je de positie wilt setten moet je een point meegeven met positieve waardes. Dus ff omrekenen. Als je wel een point met negatieve waardes meegeeft beschouwd hij deze als 0 en springt dus omhoog. Geef je echter points mee met positieve waarde zet hij deze om naar een negatieve.