-2

検索で時間を失った後、これを投稿していますが、適切な回答が得られませんでした。

私の要件は、許可システムを作成することです。フォームにタブコントロールがあり、[新しい許可] ボタン (タブコントロールの上にあるフォームの上部) をクリックすると、新しいタブ (「新しい許可」という名前) が開き、テキストボックスが表示されます。「新規許可」ボタンをクリックするたびに、同じ種類のタブが並行して開かれます。1 つのタブを選択してテキスト フィールドに入力し、[Issue Permit] ボタン (タブ コントロールの上にあるフォームの上部) をクリックすると、テキスト フィールドのデータが専用の許可番号を持つアクセス データベースに保存されている間、タブを閉じる必要があります。 .

フォームを作成しました & 「新しい許可」、「許可を発行」ボタン & タブコントロールはユーザーコントロール「ucPermit」にあります。これらの動的タブを作成し、それらのデータをデータベースに取得することに感銘を受けました。

'''''''''' 別館 '''''''''''''''''''''''''''''''''''''''''''''''''''''''

@ドナ

フォームに 2 つのパネルがあります。パネル 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 をクリックするたびに、新しいタブがテキスト ボックスと並行して開きます。特定のタブを選択して「Issue」をクリックすると、選択したタブのテキスト ボックスのデータがデータベース「PTW.accdb」に格納され、タブが閉じられます。

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 は、これらのカスタム コントロールを作成するための 2 つの別個のクラスです。

 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

これは私が今まで行った唯一のコードであり、最適化されていない可能性があります。時間をかけて通っていただければ幸いです。

4

1 に答える 1