Hello guys/girl, how are You. I have one problem. I'm creating a exam system which should give 40 random questions from database table(mySQL). I managed to create (not perfect, still small problems with .possition and .size ) textboxes and checkboxex ( on button click event ). And I managed to get ONE (first row) data from my sql but then it stops. I cannot create more textboxes or checkboxex. See my code below. If You didnt fully understand what I want or what I need, please ask question and I'll give the asnwer.
What I have tried:
<pre>Imports System.Data.SqlClient
Public Class Form1
Dim cn As New SqlConnection("Data Source=192.168.0.45,1433;Network Library=DBMSSOCN;Initial Catalog=DB_GS-TMT_SSuite;User ID=itmahir;Password=itadmin;")
Private m_textboxes() As TextBox = {}
Private m_checkboxes() As CheckBox = {}
Dim i As Integer = m_textboxes.Length
Dim a As Integer = m_checkboxes.Length
Public Overrides Property AutoScroll As Boolean
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ReDim Preserve m_textboxes(i)
m_textboxes(i) = New TextBox
With m_textboxes(i)
.Name = "TextBox" & i.ToString
.Text = "TextBox" & i.ToString
If m_textboxes.Length < 2 Then
.SetBounds(10, 10, 100, 20)
Else
.Left = m_textboxes(i - 1).Left
.Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4
.Size = m_textboxes(i - 1).Size
End If
.Tag = i
End With
AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged
Me.Controls.Add(m_textboxes(i))
CitacBaze()
ReDim Preserve m_checkboxes(a)
m_checkboxes(a) = New CheckBox
With m_checkboxes(a)
.Name = "CheckBox" & a.ToString
.Text = "CheckBox" & a.ToString
If m_checkboxes.Length < 2 Then
.SetBounds(135, 10, 100, 20)
Else
.RightToLeft = m_checkboxes(a - 1).RightToLeft
.Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4
.Size = New Size(20, 20)
End If
.Tag = a
End With
AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged
CitacOdgovora()
Me.Controls.Add(m_checkboxes(a))
End Sub
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim txt As TextBox = DirectCast(sender, TextBox)
Debug.WriteLine(txt.Name & ": [" & txt.Text & "]")
End Sub
Private Sub CheckBox_CheckStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim chB As CheckBox = DirectCast(sender, CheckBox)
Debug.WriteLine(chB.Name & ": [" & chB.Text & "]")
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.AutoScroll = True
End Sub
Public Sub CitacBaze()
cn.Open()
Dim cmd As New SqlCommand
Dim dadapter As New SqlDataAdapter
Dim datardr As SqlDataReader
Dim strSql As String
strSql = "SELECT * FROM TBL_Testiranje_Radnik"
cmd.CommandText = strSql
cmd.Connection = cn
dadapter.SelectCommand = cmd
datardr = cmd.ExecuteReader
If datardr.HasRows Then
datardr.Read()
With m_textboxes(i)
.Text = datardr("TekstPitanje")
End With
End If
cn.Close()
End Sub
Public Sub CitacOdgovora()
cn.Open()
Dim cmd As New SqlCommand
Dim dadapter As New SqlDataAdapter
Dim datardr As SqlDataReader
Dim strSql As String
strSql = "SELECT * FROM TBL_Testiranje_Radnik"
cmd.CommandText = strSql
cmd.Connection = cn
dadapter.SelectCommand = cmd
datardr = cmd.ExecuteReader
If datardr.HasRows Then
datardr.Read()
With m_checkboxes(a)
.Text = datardr("OdgovorA")
End With
End If
cn.Close()
End Sub
Public Sub KreiranjeTextBox()
ReDim Preserve m_textboxes(i)
m_textboxes(i) = New TextBox
With m_textboxes(i)
.Name = "TextBox" & i.ToString
.Text = "TextBox" & i.ToString
If m_textboxes.Length < 2 Then
.SetBounds(10, 10, 100, 20)
Else
.Left = m_textboxes(i - 1).Left
.Top = m_textboxes(i - 1).Top + m_textboxes(i - 1).Height + 4
.Size = m_textboxes(i - 1).Size
End If
.Tag = i
End With
AddHandler m_textboxes(i).TextChanged, AddressOf TextBox_TextChanged
Me.Controls.Add(m_textboxes(i))
CitacBaze()
End Sub
Public Sub KreiranjeCheckBoxova()
ReDim Preserve m_checkboxes(a)
m_checkboxes(a) = New CheckBox
With m_checkboxes(a)
.Name = "CheckBox" & a.ToString
.Text = "CheckBox" & a.ToString
If m_checkboxes.Length < 2 Then
.SetBounds(135, 10, 100, 20)
Else
.RightToLeft = m_checkboxes(a - 1).RightToLeft
.Top = m_checkboxes(a - 1).Top + m_checkboxes(a - 1).Height + 4
.Size = New Size(20, 20)
End If
.Tag = a
End With
AddHandler m_checkboxes(a).CheckStateChanged, AddressOf CheckBox_CheckStateChanged
CitacOdgovora()
Me.Controls.Add(m_checkboxes(a))
End Sub
End Class