Je veux dessiner TextBoxes/Labels sur mon formulaire en code et les connecter avec des lignes - sur la base des données que j'ai stockées dans un datatable ("treedata") . Si j'utilise le code suivant tout fonctionne bien:System.Drawing.Pen - les lignes disparaissent lorsque les étiquettes sont placées sur le formulaire
For i = 0 To treedata.Rows.Count - 1
Dim tb As New TextBox
hor = treedata.Rows(i)(11)
vern = ver + 120 * treedata.Rows(i)(4)
tb.Text = "sometext"
tb.Location = New Point(hor, vern)
Form8.Controls.Add(tb)
posofmodif = treedata.Rows(i)(10)
vero = treedata.Rows(i)(6)
Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Green)
Dim formGraphics As System.Drawing.Graphics
myPen.SetLineCap(LineCap.RoundAnchor, LineCap.ArrowAnchor, DashCap.Flat)
formGraphics = Form8.CreateGraphics()
formGraphics.DrawLine(myPen, Convert.ToSingle(posofmodif), Convert.ToSingle(vero), Convert.ToSingle(hor), Convert.ToSingle(vern))
myPen.Dispose()
formGraphics.Dispose()
Next
Cependant, je voudrais utiliser des étiquettes au lieu de TextBoxes parce qu'il n'a pas de sens d'utiliser TextBoxes plus lourdes dans ce cas. Mais quand je simplement remplacer
Dim tb As New TextBox
par
Dim tb As New Label
les étiquettes n'apparaissent sur le formulaire comme prévu, mais les lignes qui les relient apparaissent seulement pour un instant, puis tourner invisible. J'ai d'abord pensé que le problème pouvait être dû au fait que les étiquettes soient au-dessus ou au-dessous des lignes, mais même lorsque je m'assure qu'aucune ligne ne traverse une étiquette, cela arrive.
Quelqu'un at-il une idée de ce que je pourrais faire pour éviter cela?
Où faites-vous le dessin? Si vous ne le faites pas déjà, essayez de le faire dans l'événement Form.Paint. – Joe