2010-01-08 6 views
0

Comment trouver la coordonnée supérieure gauche d'un panneau lors du défilement? (.net 2)Trouver la coordonnée supérieure gauche d'un panneau lors du défilement

Disons un exemple dans VB.NET qui maintient une zone de texte dans la bordure gauche de la coutume du panneau (myPanel.vb):

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) 
    MyBase.OnPaint(e) 
    TextBox1.Location = New Point(AutoScrollPosition.X, TextBox1.Location.Y) 
    ... 

ce code ne fonctionne pas .. .

J'ai essayé aussi

Dim parentPanel As Panel = DirectCast(Parent, Panel) 
TextBox1.Location = _ 
    New Point(parentPanel.AutoScrollPosition.X, TextBox1.Location.Y) 

fonctionne pas aussi bien.

Dans le premier cas, AutoscrollPosition reste toujours = 0, dans le second, le panneau ne défile pas du tout.

+0

« ne wor pas k ": qu'est-ce que cela signifie? exception? aucun effet ? S'il vous plaît donner plus de détails ... –

Répondre

1

Enfin, trouver le problème ... ce problème est toujours lié à la focusing of the panel to first enabled control (texbox in our case) problem. Lorsque la texbox est active, elle reçoit le focus et retourne la position de défilement.

Ainsi, la solution à mantenir la TexBox à la frontière gauche était à

A) Désactiver la zone de texte (textBox1.Enabled = false)

B) Dans le panneau de contrôle de l'hôte remplacer le OnPaint avec:

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) 
    Dim parentPanel As Panel = DirectCast(Parent, Panel) 
    TextBox1.Location = _ 
     New Point(-parentPanel.AutoScrollPosition.X, TextBox1.Location.Y) 

Certes, il sera intéressant de faire la même chose avec un permis ... textBox

Questions connexes