Gå til innhold

Problemer med dynamisk textbox.parent @ vb.net


Anbefalte innlegg

Hei!

Driver å skriver en DLL for å lage textbokser, labels, etc.

Problemet ligger i at jeg gjør f.eks dette:

 

Public Function Form_Add_TextBox(ByVal parent As String, ByVal startx As Integer, ByVal starty As Integer, ByVal width As Integer, ByVal height As Integer)
	Dim textbox As New Windows.Forms.TextBox()

	textbox.Left = startx
	textbox.Top = starty
	textbox.Width = width
	textbox.Height = height
   textbox.Parent = parent

	textbox.Show()
End Function

 

Men debugger stopper på textbox.Parent og sier at stringen ikke kan bli convertert til System.Windows.(noe mer)..

 

hvordan konverterer jeg til det? andre workarounds?

 

Takker for alle hjelp som går i rett retning.

 

edit:

vb.net 2005 forresten

Endret av Hayer
Lenke til kommentar
Videoannonse
Annonse

1. Hvorfor har du satt parent som type string? hvis du sjekker så ser du fort at parent er av typen System.Windows.Forms.Control, og ikke string.

2. dette er feil måte å gjøre det på.

 

Public Class SomeForm
Inherits System.Windows.Forms.Form

 Public Sub New()
AddSomeTextBoxes()
 End Sub

 Public Function CreateTextBox(ByVal bounds As Rectangle) As System.Windows.Forms.TextBox
Dim textbox As New System.Windows.Forms.TextBox()
textbox.Location = bounds.Location
textbox.Size = bounds.Size
Return textbox
 End Function

 Public Sub AddSomeTextBoxes()
Controls.Add(CreateTextBox(New Rectangle(32, 32, 128, 30))
Controls.Add(CreateTextBox(New Rectangle(32, 54, 128, 30))
 End Sub
End Class

Dette er ikke VB6, og derfor må du tenke objektorientert.

Bruk strukturer som Rectangle etc. hvis du kan det, de er ikke noe tregere(avhenger litt av hvordan du gjør det selvsagt), og gjør koden mye enklere i bruk.

Endret av GeirGrusom
Lenke til kommentar

Høh? nei?

Du må legge til kontrollene i parent objektet, og parentobjektet er en System.Windows.Forms.Control, ikke en System.String.

 

Bare kikk litt på koden jeg skrev, så forstår du sikkert hva som skjer.

 

Men soørsmålet ditt

"Men debugger stopper på textbox.Parent og sier at stringen ikke kan bli convertert til System.Windows.(noe mer)..

 

hvordan konverterer jeg til det? andre workarounds?"

 

Du trenger ingen workaround, siden dette ikke er et problem med .NET, men hvordan du har utformet koden din.

 

Sett parent som System.Windows.Forms.Control istedet for string, og bruk parent.Controls for å legge til underkontroller.

Men da kommer du til neste problem: hvordan setter man TextChanged etc. på kontroller runtime?

Les om AddHandler funksjonen, AddressOf og delegates på MSDN.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...