我在通过搜索浪费时间后发布了这个并且没有得到正确的答案。
我的要求是创建一个许可系统。表单上有一个 tabcontrol,当我单击“New Permit”按钮(位于 tabcontrol 上方的表单顶部)时,应该会打开一个带有文本框的新选项卡(名为“NEW Permit”)。每次单击“新许可”按钮时,将并行打开相同类型的选项卡。当我们选择一个选项卡并填写文本字段并单击“颁发许可证”按钮(位于表格顶部的选项卡控件上方)时,应关闭选项卡,同时将文本字段中的数据保存到具有专用许可证号的访问数据库.
我已经创建了表单和“新许可”、“发布许可”按钮和选项卡控件位于用户控件“ucPermit”上。我对创建这些动态选项卡并将其上的数据输入数据库感到震惊。
''''''''''附件''''''''''''''''''''''''''''''''''''
@DonA
我在表格上有两个面板。面板 01(左侧)具有“摘要、许可、LOTO、HotWork”按钮。当单击每个按钮时,相应的用户控件(在运行时加载到右侧的面板 02)出现在前面。
Public Class Home
Dim ucSummary As New ucSummary
Dim ucPermitMain As New ucPermitMain
Dim ucLotoMain As New ucLotoMain
Dim ucHotWorkMain As New ucHotWorkMain
Private Sub Home_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lblDate.Text = Format(Now, "MMMM dd, yyyy")
lblTime.Text = Format(Now, "h:mm tt")
btnSummary.BackColor = Color.LightGreen
Panel2.Controls.Add(ucSummary)
ucSummary.Dock = DockStyle.Fill
Panel2.Controls.Add(ucPermitMain)
ucPermitMain.Dock = DockStyle.Fill
Panel2.Controls.Add(ucLotoMain)
ucLotoMain.Dock = DockStyle.Fill
Panel2.Controls.Add(ucHotWorkMain)
ucHotWorkMain.Dock = DockStyle.Fill
End Sub
Private Sub btnSummary_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSummary.Click
btnSummary.BackColor = Color.LightGreen
btnPermit.BackColor = Color.LightBlue
btnLoto.BackColor = Color.LightBlue
btnHotWork.BackColor = Color.LightBlue
ucSummary.BringToFront()
End Sub
Private Sub btnPermit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPermit.Click
btnSummary.BackColor = Color.LightBlue
btnPermit.BackColor = Color.LightGreen
btnLoto.BackColor = Color.LightBlue
btnHotWork.BackColor = Color.LightBlue
ucPermitMain.BringToFront()
End Sub
Private Sub btnLoto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoto.Click
btnSummary.BackColor = Color.LightBlue
btnPermit.BackColor = Color.LightBlue
btnLoto.BackColor = Color.LightGreen
btnHotWork.BackColor = Color.LightBlue
ucLotoMain.BringToFront()
End Sub
Private Sub btnHotWork_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHotWork.Click
btnSummary.BackColor = Color.LightBlue
btnPermit.BackColor = Color.LightBlue
btnLoto.BackColor = Color.LightBlue
btnHotWork.BackColor = Color.LightGreen
ucHotWorkMain.BringToFront()
End Sub
End Class
我刚刚开始,目前正在研究与 ucPermitMain 用户控件一起使用的 Permit 部分。它在顶部有一个工具条 (tsPermit),在下面有一个空的选项卡控件 (tcPermit)。工具条有按钮“NewPermit、Issue、Close”(现在..更多随设计而来)每次单击 NewPermit 时,新选项卡会同时打开并带有文本框。单击选中特定的选项卡和“问题”时,“选定”选项卡的文本框上的数据要放入数据库“ ptw.accdb”,&TAB将关闭。
Public Class ucPermitMain
Dim PTW As New OleDb.OleDbConnection
Dim ucPermit As New ucPermit
Dim txtbox As New TextBox
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
PTW = New OleDb.OleDbConnection
PTW.ConnectionString = "Provider=Microsoft.ACE.Oledb.12.0; Data Source=" & Application.StartupPath & "\PTW.accdb"
End Sub
Public Sub tsbtnNewPermit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbtnNewPermit.Click
tsbtnClose.Visible = True
tsbtnClose.Enabled = True
Dim CTP As New CustomTabPage("New PTW", New Object)
Me.tcPermit.TabPages.Add(CTP)
tcPermit.SelectTab(tcPermit.TabPages.Count - 1)
End Sub
Public Sub tsbtnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbtnClose.Click
tcPermit.TabPages.RemoveAt(tcPermit.SelectedIndex)
'This bottom code is telling it to remove the selected tab and countdown minus (-) 1 (one)
If tcPermit.TabPages.Count > 0 Then
tcPermit.SelectTab(tcPermit.SelectedIndex)
Else
tsbtnClose.Visible = False
tsbtnClose.Enabled = False
End If
End Sub
Public Sub tsbtnIssue_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbtnIssue.Click
Dim cmd As New OleDb.OleDbCommand
Dim CTB As CustomTextBox
If Not PTW.State = ConnectionState.Open Then
'open connection if it is not yet open
PTW.Open()
End If
cmd.Connection = PTW
cmd.CommandText = "INSERT INTO tblPermit(ptwNo)" & _
"VALUES('" & ?????????????? & "')"
cmd.ExecuteNonQuery()
End Sub
End Class
CustomTextBox 和 CustomTabPage 是用于创建这些自定义控件的两个单独的类。
Imports System.Windows.Forms
Public Class CustomTabPage
Inherits TabPage
Public Sub New(ByVal Name As String, ByVal NewConstruct As Object)
InitTextBox(1)
Me.Text = Name
End Sub
Private Sub InitTextBox(ByVal Num As Integer)
Dim LocX As Integer = 10
Dim LocY As Integer = 10
Dim CTB As New CustomTextBox("")
CTB.Location = New System.Drawing.Point(LocX, LocY)
Me.Controls.Add(CTB)
End Sub
End Class
Imports System.Windows.Forms
Public Class CustomTextBox
Inherits TextBox
Public Sub New(ByVal Name As String)
Me.Text = Name
End Sub
End Class
这是我到目前为止所做的唯一代码,它们可能没有优化。希望你能花时间去经历。