none
Alle Steuerelemente zur Laufzeit verschieben? RRS feed

  • Frage

  • Ich möchte alle Steuerelemente, die in meiner Form sind um 1 verschieben.

    Na Klar kann man das so machen

    Label1.Location = New Point(Label1.Location.X, Label1.Location.Y - 1)
    

    aber ich habe rund 50 Elemente in der Form und das alles einzugeben kostet eine Menge Zeit. Außerdem habe ich noch 3 andere Formen mit solch vielen Elementen.

    Also hatte ich mir gedacht, dass eine Formel gibt, die alle Steuerelemente verschieben kann.

     

    PS. Ich benutze VisualBasic 2008 Express

    Montag, 16. August 2010 11:15

Antworten

  • Hallo,

    Ich möchte alle Steuerelemente, die in meiner Form sind um 1 verschieben.

    Na Klar kann man das so machen

    Label1.Location = New Point(Label1.Location.X, Label1.Location.Y - 1)
     

    aber ich habe rund 50 Elemente in der Form und das alles einzugeben kostet eine Menge Zeit. Außerdem habe ich noch 3 andere Formen mit solch vielen Elementen.

    Also hatte ich mir gedacht, dass eine Formel gibt, die alle Steuerelemente verschieben kann.

    wenn alle Steuerelemente um den gleichen Wert verschoben werden sollen, kannst Du diese über ein Panel zusammenfassen und verschiebst nur dieses Panel. Damit werden alle darin enthaltenen Steuerelemente automatisch verschoben. Hier hättest Du zudem die Möglichkeit die Automatische Scrollfunktionalität zu verwenden, denn die Inhalte in diesem Panel nicht mehr vollständig dargestellt werden können. Siehe AutoScroll Eigenschaft.

    Weiter kannst Du natürlich alle Steuerelemente mit For Each durchlaufe und entsprechend manipulieren:

    For Each lCtl As Control In Me.Controls
      lCtl.Location = New Point(lCtl.Location.X, lCtl.Location.Y - 1)
    Next

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Montag, 16. August 2010 11:36
    Moderator
  • Wie wäre es mit einer Schleife?
     
    For Each c In Me.Controls
      c.Location = New Point(c.Location.x, c.Location.Y -1)
    Next
     

    --
    Viele Gruesse
    Peter

    Montag, 16. August 2010 11:40

Alle Antworten

  • Hallo,

    Ich möchte alle Steuerelemente, die in meiner Form sind um 1 verschieben.

    Na Klar kann man das so machen

    Label1.Location = New Point(Label1.Location.X, Label1.Location.Y - 1)
     

    aber ich habe rund 50 Elemente in der Form und das alles einzugeben kostet eine Menge Zeit. Außerdem habe ich noch 3 andere Formen mit solch vielen Elementen.

    Also hatte ich mir gedacht, dass eine Formel gibt, die alle Steuerelemente verschieben kann.

    wenn alle Steuerelemente um den gleichen Wert verschoben werden sollen, kannst Du diese über ein Panel zusammenfassen und verschiebst nur dieses Panel. Damit werden alle darin enthaltenen Steuerelemente automatisch verschoben. Hier hättest Du zudem die Möglichkeit die Automatische Scrollfunktionalität zu verwenden, denn die Inhalte in diesem Panel nicht mehr vollständig dargestellt werden können. Siehe AutoScroll Eigenschaft.

    Weiter kannst Du natürlich alle Steuerelemente mit For Each durchlaufe und entsprechend manipulieren:

    For Each lCtl As Control In Me.Controls
      lCtl.Location = New Point(lCtl.Location.X, lCtl.Location.Y - 1)
    Next

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Montag, 16. August 2010 11:36
    Moderator
  • Wie wäre es mit einer Schleife?
     
    For Each c In Me.Controls
      c.Location = New Point(c.Location.x, c.Location.Y -1)
    Next
     

    --
    Viele Gruesse
    Peter

    Montag, 16. August 2010 11:40
  • Hallo,

    ich weis nicht ob ich dich richtig verstanden habe, aber wenn du alle Steuerelemente einzeln verschieben können willst

    und es alles die gleichen Steuerelemente sind (zB. Labels) könntest du auch von dieser Klasse ableiten und deren Mouse_Down/Up Ereignisse überschreiben und dort die Bewegung mit der Maus implementieren.

    Das hätte den Vorteil, dass du nur ein Mal Code schreiben musst der dann aber für alle Steuerelemente (des selben Typs) gültig ist.

    Wenn du alle Steuerelemente auf einmal (gleichzeitig) verschieben willst bietet sich natürlich Thorstens und Peters Variante an.


    MfG, Sebastian Gross
    Montag, 16. August 2010 15:05
  • Hallo MaSch0212,

    gibt es hier noch Feedback von Deiner Seite, ob und welche Antworten Dir weitergeholfen haben? Deine Frage war ja nun mehrdeutig zu interpretieren.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Sonntag, 29. August 2010 13:49
    Moderator
  • Wie kann man überprüfen ob Label5.Location.X kleiner als 20 bzw. größer 520 als ist?

    (  If Label5.Location.X  ______________________________________ Then  )

    Samstag, 29. Januar 2011 20:33
  •  If Label5.Location.X < 20 Or Label5.Location.X > 520 Then 
    

    hallo Simon

    Point.X Property  

     

    Gets or sets the x-coordinate of this Point.

     

    Namespace:  System.Drawing
    Assembly:  System.Drawing (in System.Drawing.dll)
    Syntax

     
    'Declaration

    Public Property X As Integer
    Get
    Set
    schöne Grüße Ellen

    Ich benutze/ I'm using VB2008 & VB2010
    Samstag, 29. Januar 2011 22:09