Forum » Programiranje » vb.net: dynamic textbox
vb.net: dynamic textbox
saule ::
Zdravo,
Na formi imam knof, ki ob pritisku doda textbox:
Tako kot za prvega jo koda spisana še za ostalih 6 textbox-ev. Vsak je posebej, ker so po horizontali vsak po svoje in se mi je nekako zdelo najlažje. Ta knof ob vsakem pritisku doda novo vrsto textbox-ev in beleži koliko jih je (intBtnClkCount). S to številko so textbox-i tudi označeni v kateri vrsti so + vsak ima unique ime (TextBox11 je prvi v prvi vrsti, Textbox12 je prvi v prvi v drugi vrsti and so on..) Ok, do tu vse vredu ni mi pa sedaj jasno kako naj preberem vsebino (in jo potem zapišem v bazo). Nekaj pacam takole:
Program mora prebrati vsako vrstico textbox-ev posebej (torej textbox11 do textbox61, sestavi SQL stavek, insert-a in potem na novo textbox12 do textbox62....) in jo zapisati v bazo.
Ne znam prebrat vsebine textboxev, ki jih programsko dodajam... :) Ima mogoče kdo idejo?
Na formi imam knof, ki ob pritisku doda textbox:
Dim yPosition As Integer
yPosition = 473 + (26 * intBtnClkCount)
intBtnClkCount += 1
Dim TextBox1 As New TextBox()
Dim TextBox2 As New TextBox()
Dim TextBox3 As New TextBox()
Dim TextBox4 As New TextBox()
Dim TextBox5 As New TextBox()
Dim TextBox6 As New TextBox()
With TextBox1
.Name = "TextBox1" & intBtnClkCount
.Location = New Point(12, yPosition)
.Size = New Size(51, 22)
Me.Controls.Add(TextBox1)
End WithTako kot za prvega jo koda spisana še za ostalih 6 textbox-ev. Vsak je posebej, ker so po horizontali vsak po svoje in se mi je nekako zdelo najlažje. Ta knof ob vsakem pritisku doda novo vrsto textbox-ev in beleži koliko jih je (intBtnClkCount). S to številko so textbox-i tudi označeni v kateri vrsti so + vsak ima unique ime (TextBox11 je prvi v prvi vrsti, Textbox12 je prvi v prvi v drugi vrsti and so on..) Ok, do tu vse vredu ni mi pa sedaj jasno kako naj preberem vsebino (in jo potem zapišem v bazo). Nekaj pacam takole:
For x As Integer = 0 To intBtnClkCount
Dim textbox As New TextBox
With textbox
.Name = "Textbox1" & intBtnClkCount
End With
SQLStr = "INSERT INTO [temp].[dbo].[temp] ([textbox1]) VALUES(" & textbox.Text & ")"
Dim command As New System.Data.SqlClient.SqlCommand(SQLStr, connection)
connection.Open()
command.ExecuteNonQuery()
connection.Close()
Program mora prebrati vsako vrstico textbox-ev posebej (torej textbox11 do textbox61, sestavi SQL stavek, insert-a in potem na novo textbox12 do textbox62....) in jo zapisati v bazo.
Ne znam prebrat vsebine textboxev, ki jih programsko dodajam... :) Ima mogoče kdo idejo?
Ericssony ::
Uporabi foreach zanko ki gre skoz vse gradnike na formi in če je gradnik tipa textbox potem enostavno prebereš vrednost lastnosti text oz. vrednost zapišeš v bazo.
Dim myctl As Control
For Each myctl in Me.Controls
If TypeOf myctl Is TextBox Then
' vrednosti dobiš zdaj z myctl.Text
End If
Next Zgodovina sprememb…
- spremenilo: Ericssony ()
saule ::
Thx!
Jaz rabim na koncu dobit po 6 vrednosti - 6 textbox-ev tvori en SQL stavek, število SQL stavkov na koncu je pač poljubno, odvisno od tega koliko jih uporabnik "naštemplja".
Tako sem vzel tvoj način kako priti do vsebine textbox-ev, vse skupaj dal v en array, array podelil s 6 in na koncu dobil kar sem želel:
Meni zadostuje, me pa vseeno zanima če obstaja kakšna "bolj pravilna" pot?
Jaz rabim na koncu dobit po 6 vrednosti - 6 textbox-ev tvori en SQL stavek, število SQL stavkov na koncu je pač poljubno, odvisno od tega koliko jih uporabnik "naštemplja".
Tako sem vzel tvoj način kako priti do vsebine textbox-ev, vse skupaj dal v en array, array podelil s 6 in na koncu dobil kar sem želel:
Dim myctl As Control
Dim l As New List(Of String)
For Each myctl In Me.Controls
If TypeOf myctl Is TextBox And Not myctl.Name = "searchbox" Then
l.Add(myctl.Text)
End If
Next
Dim nrOfRows As Integer
Dim y As Integer
y = 0
nrOfRows = l.Count / 6
For x As Integer = 1 To nrOfRows
MessageBox.Show(l(y) & " + " & l(y + 1) & " + " & l(y + 2) & " + " & l(y + 3))
y = y + 6
NextMeni zadostuje, me pa vseeno zanima če obstaja kakšna "bolj pravilna" pot?
saule ::
Zopet sem pri nečem podobnem - programatično sem dodal textbox sedaj pa nevem kako naj naslavljam evente za te textbox-e (on KeyDown)?
majlo ::
Public Class Form1
Private TextBoxes() As MyTextBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Static num As Integer
num += 1
ReDim TextBoxes(num)
TextBoxes(num - 1) = New MyTextBox()
With TextBoxes(num - 1)
.Name = "Textbox" & num
'.Text = "Textbox" & num
.Location = New System.Drawing.Point(10, num * (.Height + 10))
End With
Me.Controls.AddRange(New System.Windows.Forms.Control() {TextBoxes(num - 1)})
End Sub
Public Class MyTextBox
Inherits System.Windows.Forms.TextBox
Private Sub MyTextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.TextChanged
MsgBox(Me.Name & " " & Me.Text)
End Sub
End Class
End Class
NextMalo bo moral spremenit kodo, ki jo že maš.
Aja isto lahko dodaš v class za key down itd..
Private Sub MyTextBox_KeyDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.KeyPress
'Pač kaj bi rad naredil
End Sub
Zgodovina sprememb…
- spremenilo: majlo ()
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Visual BasicOddelek: Programiranje | 3687 (2713) | cekr |
| » | Odpiranje programa v Visual StudioOddelek: Programiranje | 1024 (882) | darkolord |
| » | c# undo, redo, pasteOddelek: Programiranje | 1087 (987) | japol |
| » | Vb 2005 - TextBox - Izračun števila vrstic?Oddelek: Izdelava spletišč | 1718 (1593) | smash |
| » | [ASP.NET] send mailOddelek: Programiranje | 1392 (1329) | Microsoft |