Hét vraag- en antwoordplatform van Nederland

Visual Basic; een textbox automatisch (at runtime) laten verplaatsen ten opzichte van variabele content van een andere textbox, hoe doe ik dit?

Ik heb wel eens wat gespeeld met vb, maar ben verre van een programmeur, desondanks denk ik dat ik in de volgende situatie wat vb nodig heb.

Op mijn werk (televisie) gebruiken we software om namen te maken en in beeld te zetten tijdens een uitzending. De template hiervoor word in een 'scene' gemaakt; op 1 regelhoogte een tekstveld met naam & achternaam en op dezelfde hoogte een tekstveld met functieomschrijving.
Naam en functieomschrijving moeten (automatisch) in alle gevallen op gelijke afstand van elkaar blijven. Helaas gaat dit niet tenzij je allerlei extra handelingen verricht en zal igv een lange naam, deze over de functieomschrijving heen gaan.

Laat ik aan zo'n 'scene' nou een vb scriptje kunnen hangen die dit volgens mij kan opvangen!

Ik heb al wat zitten proberen met Labels, Textboxen en richtekstboxen in Visual Basic zelf, maar kom niet heel ver, maar volgens mij is de logica in vb om mijn doel te bereiken het zelfde als in de software op mijn werk.

Wat ik wil:
-1 Textbox waarin (een vastgestelde) hoeveelheid text in kan, die in de breedte mee sized naargelang de hoeveelheid tekst wordt ingevoerd.
-Een 2e tekstbox die altijd op gelijke afstand tov textbox1 meeverplaatst, kijkend naar de breedte van textbox1.

Verwijderde gebruiker
12 jaar geleden
975

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (1)

De invoer kun je beperken via de MaxLength-eigenschap;

http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.maxlength%28v=vs.100%29.aspx

Dat zal het beste werken voor lettertypes met een vaste breedte. Resizen is net zo makkelijk, eigenschap Autosize op true zetten:

http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.autosize%28v=vs.100%29.aspx

Als dat niet voldoende is, zul je de resizing-events moeten aanpassen, en de breedte van de gewenste tekst moeten opvragen via een Graphics-object. In dat geval gebruik je de MeasureString methode om de PreferredSize voor de tekstbox te berekenen:

http://msdn.microsoft.com/en-us/library/system.drawing.graphics.measurestring.aspx
(Lees meer...)
Bronnen:
Verwijderde gebruiker
12 jaar geleden
Verwijderde gebruiker
12 jaar geleden
Dat kan eventueel vanuit code (Resize event, en dan Locatie-eigenschap aanpassen), maar handiger is om dit met controls op te lossen; Voeg een panel toe, en zet de maximale hoogte daarvan op de hoogte van een textbox (21?). Drop daarin textbox1 en "Dock" die aan de linkerkant. Drop er vervolgens een label in, zet autosize uit, en maak je die wat breder. Ook links docken. Vervolgens de derde textbox erin droppen, en links docken, en ze zouden moeten aansluiten. Alternatief kun je een "FlowLayoutPanel" gebruiken; deze lijnt de textboxen ook naast elkaar uit;
http://msdn.microsoft.com/en-us/library/f9e8s203.aspx
rose
12 jaar geleden
Wat dacht je van (bij TextBox1.Resize of hoe dat heet in VB) TextBox2.Left = Textbox1.Left + Textbox1.Width + 30 (of iets in die geest)
Verwijderde gebruiker
12 jaar geleden
Yup, ziet er goed uit :)

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding