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 With
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:
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 Next
Meni 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 Next
Malo 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 | 3460 (2486) | cekr |
» | Odpiranje programa v Visual StudioOddelek: Programiranje | 918 (776) | darkolord |
» | c# undo, redo, pasteOddelek: Programiranje | 955 (855) | japol |
» | Vb 2005 - TextBox - Izračun števila vrstic?Oddelek: Izdelava spletišč | 1613 (1488) | smash |
» | [ASP.NET] send mailOddelek: Programiranje | 1275 (1212) | Microsoft |