Powerpacks.Lineshape

13/03/2008 - 09:45 von Volker Friedrich | Report spam
Hallo,

arbeite mit Lineshape von Visual Basic Powerpacks.

Erstelle Lineshape dynamisch (per Code) und möchte spàter Eigenschaften
abfragen und àndern.
Die Eigenschaften Namen und Tag können abgefragt und geàndert werden.
Die Positionseigenschaften der Lineshape (x1,y1,x2,y2) nicht.

'1. LineShape erstellen per Code

Dim sContainer As New Microsoft.VisualBasic.PowerPacks.ShapeContainer
Dim sLine As New Microsoft.VisualBasic.PowerPacks.LineShape

'2. LineShape der Picturebox1 hinzufügen per Code

Erst Lineshape dem ShapeContainer zuweisen,
dann ShapeContainer der Picturebox1 hinzufügen.

sContainer.Shapes.Add(sLine)
sContainer.Name= "Line"
Picturebox1.Controls.Add(sContainer


'3. Abfrage

Dim ctrlVar1 As Control
Dim strName as String
Dim strTag as String

For Each ctrlVar In Picturebox1.Controls

'Picturebox1.Controls erlaubt Eigenschaftsabfrage von Name und Tag

strName = ctrlVar.Name 'Name ist ok
strTag = ctrlVar.Tag 'Tagwert ist ok

'die LineShape-Position kann nicht abgefragt bzw. veràndern werden

ctrVar.x1= ctrVar.x1 - 10
ctrVar.y1= ctrVar.y1 - 10

'ctrVar kennt zwar *.tag, *.Name, aber nicht *.x1,*.y1

next

Ich vermute, dass ctrVar die Eigenscahften von ShapeContainer hat und nicht
von LineShape (siehe Punkt 2.)

Wie kann ich die Position von LineShape nachtràglich per Code àndern?


Danke im Voraus
Volker
 

Lesen sie die antworten

#1 Karsten Sosna
13/03/2008 - 10:24 | Warnen spam
For Each ctrlVar In Picturebox1.Controls

'Picturebox1.Controls erlaubt Eigenschaftsabfrage von Name und Tag

strName = ctrlVar.Name 'Name ist ok
strTag = ctrlVar.Tag 'Tagwert ist ok

'die LineShape-Position kann nicht abgefragt bzw. veràndern werden

ctrVar.x1= ctrVar.x1 - 10
ctrVar.y1= ctrVar.y1 - 10

'ctrVar kennt zwar *.tag, *.Name, aber nicht *.x1,*.y1



Ja, diese Eigenschaften hat ein Control auch. Picturebox.Cocntrols liefert
ein Control und kein LineShape. Das musst Du erst casten.

Dim ctrSHP As LineShape = DirectCast(ctrVar, LineShape)

P.S.: Vielleicht solltest Du mal Option Strinct On schalten.
Gruß Scotty

Ähnliche fragen