You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
473 lines
20 KiB
473 lines
20 KiB
Imports System.Data
|
|
Imports System.Data.SqlClient
|
|
Imports System.Data.SqlTypes
|
|
Imports System.IO
|
|
Imports System.Threading 'Namespace for Thread class
|
|
|
|
Public Class frmDokumentAufbereitung
|
|
Inherits System.Windows.Forms.Form
|
|
|
|
#Region " Vom Windows Form Designer generierter Code "
|
|
|
|
Public Sub New()
|
|
MyBase.New()
|
|
|
|
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
|
|
|
|
End Sub
|
|
|
|
' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen.
|
|
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
|
If disposing Then
|
|
If Not (components Is Nothing) Then
|
|
components.Dispose()
|
|
End If
|
|
End If
|
|
MyBase.Dispose(disposing)
|
|
End Sub
|
|
|
|
' Für Windows Form-Designer erforderlich
|
|
Private components As System.ComponentModel.IContainer
|
|
|
|
'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich
|
|
'Sie kann mit dem Windows Form-Designer modifiziert werden.
|
|
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
|
|
Friend WithEvents Label1 As System.Windows.Forms.Label
|
|
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
|
|
Friend WithEvents btnabbruch As System.Windows.Forms.Button
|
|
Friend WithEvents btnWeiter As System.Windows.Forms.Button
|
|
Friend WithEvents lblpartner As System.Windows.Forms.Label
|
|
Friend WithEvents Label2 As System.Windows.Forms.Label
|
|
Friend WithEvents btnclose As System.Windows.Forms.Button
|
|
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
|
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(frmDokumentAufbereitung))
|
|
Me.btnabbruch = New System.Windows.Forms.Button()
|
|
Me.Label1 = New System.Windows.Forms.Label()
|
|
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
|
|
Me.btnWeiter = New System.Windows.Forms.Button()
|
|
Me.lblpartner = New System.Windows.Forms.Label()
|
|
Me.Label2 = New System.Windows.Forms.Label()
|
|
Me.btnclose = New System.Windows.Forms.Button()
|
|
Me.SuspendLayout()
|
|
'
|
|
'btnabbruch
|
|
'
|
|
Me.btnabbruch.Location = New System.Drawing.Point(8, 104)
|
|
Me.btnabbruch.Name = "btnabbruch"
|
|
Me.btnabbruch.Size = New System.Drawing.Size(88, 32)
|
|
Me.btnabbruch.TabIndex = 0
|
|
Me.btnabbruch.Text = "Abbruch"
|
|
'
|
|
'Label1
|
|
'
|
|
Me.Label1.Location = New System.Drawing.Point(8, 32)
|
|
Me.Label1.Name = "Label1"
|
|
Me.Label1.Size = New System.Drawing.Size(352, 32)
|
|
Me.Label1.TabIndex = 1
|
|
Me.Label1.Text = "Die auszudruckenden Dokumente werden zusammengestellt und aufbereitet."
|
|
'
|
|
'ProgressBar1
|
|
'
|
|
Me.ProgressBar1.Location = New System.Drawing.Point(8, 64)
|
|
Me.ProgressBar1.Name = "ProgressBar1"
|
|
Me.ProgressBar1.Size = New System.Drawing.Size(352, 23)
|
|
Me.ProgressBar1.TabIndex = 2
|
|
'
|
|
'btnWeiter
|
|
'
|
|
Me.btnWeiter.Enabled = False
|
|
Me.btnWeiter.Location = New System.Drawing.Point(232, 104)
|
|
Me.btnWeiter.Name = "btnWeiter"
|
|
Me.btnWeiter.Size = New System.Drawing.Size(128, 32)
|
|
Me.btnWeiter.TabIndex = 3
|
|
Me.btnWeiter.Text = "Druckdialog anzeigen"
|
|
'
|
|
'lblpartner
|
|
'
|
|
Me.lblpartner.Location = New System.Drawing.Point(56, 8)
|
|
Me.lblpartner.Name = "lblpartner"
|
|
Me.lblpartner.Size = New System.Drawing.Size(336, 23)
|
|
Me.lblpartner.TabIndex = 5
|
|
'
|
|
'Label2
|
|
'
|
|
Me.Label2.Location = New System.Drawing.Point(8, 8)
|
|
Me.Label2.Name = "Label2"
|
|
Me.Label2.Size = New System.Drawing.Size(48, 23)
|
|
Me.Label2.TabIndex = 4
|
|
Me.Label2.Text = "Partner:"
|
|
'
|
|
'btnclose
|
|
'
|
|
Me.btnclose.Location = New System.Drawing.Point(8, 104)
|
|
Me.btnclose.Name = "btnclose"
|
|
Me.btnclose.Size = New System.Drawing.Size(88, 32)
|
|
Me.btnclose.TabIndex = 6
|
|
Me.btnclose.Text = "Schliessen"
|
|
Me.btnclose.Visible = False
|
|
'
|
|
'frmDokumentAufbereitung
|
|
'
|
|
Me.AutoScale = False
|
|
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
|
Me.ClientSize = New System.Drawing.Size(370, 141)
|
|
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnclose, Me.lblpartner, Me.Label2, Me.btnWeiter, Me.ProgressBar1, Me.Label1, Me.btnabbruch})
|
|
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
|
|
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
|
Me.MaximizeBox = False
|
|
Me.MaximumSize = New System.Drawing.Size(366, 166)
|
|
Me.MinimizeBox = False
|
|
Me.Name = "frmDokumentAufbereitung"
|
|
Me.Text = "Druckaufbereitung"
|
|
Me.ResumeLayout(False)
|
|
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Dim DruckThread As New Thread(AddressOf Druckaufbereitung)
|
|
Dim ProgressThread As New Threading.Thread(AddressOf set_progress)
|
|
Dim M_Druchjobid As Integer
|
|
Dim alnr As Integer
|
|
Dim part As Integer
|
|
Public Sub New(ByVal druckjobid As Integer, ByVal part As Integer)
|
|
MyBase.New()
|
|
|
|
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
|
|
InitializeComponent()
|
|
Me.M_Druchjobid = druckjobid
|
|
Me.alnr = druckjobid
|
|
Me.part = part
|
|
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
|
|
|
|
End Sub
|
|
Private Sub tf_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
|
Me.get_partner(alnr)
|
|
Me.Text = "Dokumentaufbereitung: " + Me.lblpartner.Text
|
|
Me.ProgressBar1.Value = 0
|
|
Me.btnWeiter.Text = "Drucken"
|
|
End Sub
|
|
|
|
Private Sub set_progress()
|
|
Try
|
|
Do While 1 = 1
|
|
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
|
|
If Me.ProgressBar1.Value = 100 Then Me.ProgressBar1.Value = 0
|
|
ProgressThread.Sleep(100)
|
|
Loop
|
|
Catch
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Public Sub StartDruckaufbereituung()
|
|
ProgressThread.Start()
|
|
DruckThread.Start()
|
|
End Sub
|
|
|
|
|
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnabbruch.Click
|
|
Try
|
|
ProgressThread.Abort()
|
|
Catch
|
|
End Try
|
|
Try
|
|
DruckThread.Abort()
|
|
Catch
|
|
End Try
|
|
Close()
|
|
End Sub
|
|
|
|
Private Sub Druckaufbereitung()
|
|
Try
|
|
Dim remoteObj As EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07
|
|
Dim Obj As Object
|
|
Obj = Activator.GetObject( _
|
|
GetType(EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07), _
|
|
System.Configuration.ConfigurationSettings.AppSettings("RemoteObjUrl"))
|
|
|
|
remoteObj = CType(Obj, EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07)
|
|
|
|
remoteObj.PrintJobF(Me.M_Druchjobid, Me.part)
|
|
Me.btnWeiter.Enabled = True
|
|
Me.ProgressBar1.Value = 100
|
|
Me.Refresh()
|
|
Application.DoEvents()
|
|
Me.Label1.Text = "Die EDOKA-Druckaufbereitung ist abgeschlossen."
|
|
Me.Text = "Fertig - " + Me.Text
|
|
Me.BringToFront()
|
|
Catch ex As Exception
|
|
MsgBox("Aufgrund des folgenden Fehlers konnte der Druckjob nicht gestartet werden:" + vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical)
|
|
Finally
|
|
Me.Cursor = Cursors.Default
|
|
ProgressThread.Abort()
|
|
DruckThread.Abort()
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private printthread As Thread
|
|
Private Sub btnWeiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWeiter.Click
|
|
Try
|
|
kill_acroreader()
|
|
Catch
|
|
End Try
|
|
tuesdrucken()
|
|
End Sub
|
|
|
|
Private Sub kill_acroreader()
|
|
Try
|
|
Dim myprocess() As Process
|
|
Dim mp As Process
|
|
myprocess = Process.GetProcessesByName("acrord32")
|
|
For Each mp In myprocess
|
|
mp.Kill()
|
|
Next
|
|
Thread.Sleep(100)
|
|
Catch ex As Exception
|
|
Finally
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub tuesdrucken()
|
|
Dim i As Integer
|
|
Me.Cursor = Cursors.WaitCursor
|
|
If get_pdf(alnr, Me.part) Then
|
|
Me.btnclose.Visible = True
|
|
Me.btnabbruch.Visible = False
|
|
Me.btnWeiter.Text = "Ausdruck wiederholen"
|
|
print_pdf(alnr)
|
|
If get_parts(alnr) = 0 Then
|
|
Me.update_aushaendigungsquittung_status(alnr, 3)
|
|
End If
|
|
If part = 0 Then
|
|
set_druckjobstatus(alnr, 3)
|
|
Else
|
|
Me.set_druckjobstatus_part(alnr, part, 3)
|
|
End If
|
|
Else
|
|
MsgBox("Das temporäre PDF-Dokumente konnte nicht erstellt werden.", MsgBoxStyle.Information)
|
|
End If
|
|
Me.Cursor = Cursors.Default
|
|
Me.Close()
|
|
End Sub
|
|
|
|
|
|
Public Function get_parts(ByVal alnr As Integer) As Integer
|
|
Dim connect As New SqlConnection()
|
|
connect.ConnectionString = Globals.sConnectionString
|
|
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.sp_edex_bl_get_druckjobparts_count"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
Try
|
|
scmCmdToExecute.Connection = connect
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@parts", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return scmCmdToExecute.Parameters("@parts").Value
|
|
Catch ex As Exception
|
|
Return -1
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
dtToReturn.Dispose()
|
|
connect.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
|
|
Private Function set_druckjobstatus_part(ByVal alnr As Integer, ByVal part As Integer, ByVal status As Integer) As Integer
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_set_druckjobstatus_part"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
Try
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@part", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, part))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@return", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return scmCmdToExecute.Parameters("@return").Value
|
|
Catch ex As Exception
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
dtToReturn.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
|
|
Private Sub print_pdf(ByVal alnr As Integer)
|
|
Try
|
|
Dim f As New frmPDFPrinter(True)
|
|
f.addressBar.Text = dokumentfilename
|
|
f.MdiParent = Me.MdiParent
|
|
f.alnr = alnr
|
|
f.Part = Me.part
|
|
f.Show()
|
|
Application.DoEvents()
|
|
f.PrintPDF()
|
|
|
|
Catch ex As Exception
|
|
End Try
|
|
End Sub
|
|
|
|
Dim dokumentfilename As String
|
|
Private Function get_pdf(ByVal alnr As Integer, ByVal part As Integer) As Boolean
|
|
If part = 0 Then
|
|
'PDF-Dokument aus der Datenbank auslesen
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim connection As New SqlConnection()
|
|
Dim da As New SqlDataAdapter("Select * from edex_bl_druckjob where (status=2 or status=3) and auslieferungnr=" + LTrim(Str(alnr)), connection)
|
|
Dim CB As SqlCommandBuilder = New SqlCommandBuilder(da)
|
|
Dim ds As New DataSet()
|
|
Try
|
|
'Connectionstring zur Datenbank
|
|
connection.ConnectionString = Globals.sConnectionString
|
|
connection.Open()
|
|
da.Fill(ds, "docs")
|
|
Dim myRow As DataRow
|
|
myRow = ds.Tables(0).Rows(0)
|
|
|
|
Dim MyData() As Byte
|
|
MyData = myRow.Item("pdfdokument_aufbereitet")
|
|
dokumentfilename = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") + LTrim(Str(myRow.Item(0))) + ".PDF"
|
|
Dim K As Long
|
|
K = UBound(MyData)
|
|
Dim fs As New FileStream(dokumentfilename, FileMode.OpenOrCreate, FileAccess.Write)
|
|
fs.Write(MyData, 0, K)
|
|
fs.Close()
|
|
fs = Nothing
|
|
Return True
|
|
Catch ex As Exception
|
|
Return False
|
|
Finally
|
|
CB = Nothing
|
|
ds = Nothing
|
|
da = Nothing
|
|
connection.Close()
|
|
connection = Nothing
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
Else
|
|
'PDF-Dokument aus der Datenbank auslesen
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim connection As New SqlConnection()
|
|
Dim s As String = "SELECT dbo.EDEX_BL_Druckjob_Part.* " & _
|
|
"FROM dbo.EDEX_BL_Druckjob INNER JOIN " & _
|
|
"dbo.EDEX_BL_Druckjob_Part ON dbo.EDEX_BL_Druckjob.druckjobnr = dbo.EDEX_BL_Druckjob_Part.druckjobnr " & _
|
|
"where (dbo.edex_bl_druckjob_part.status=2 or dbo.edex_bl_druckjob_part.status=3) and dbo.edex_bl_druckjob.auslieferungnr=" + LTrim(Str(alnr)) & " " & _
|
|
"and dbo.edex_bl_druckjob_part.partno=" + LTrim(part)
|
|
Dim da As New SqlDataAdapter(s, connection)
|
|
Dim CB As SqlCommandBuilder = New SqlCommandBuilder(da)
|
|
Dim ds As New DataSet()
|
|
Try
|
|
'Connectionstring zur Datenbank
|
|
connection.ConnectionString = Globals.sConnectionString
|
|
connection.Open()
|
|
da.Fill(ds, "docs")
|
|
Dim myRow As DataRow
|
|
myRow = ds.Tables(0).Rows(0)
|
|
|
|
Dim MyData() As Byte
|
|
MyData = myRow.Item("pdfdokument_aufbereitet")
|
|
dokumentfilename = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") + LTrim(Str(myRow.Item(0))) + ".PDF"
|
|
Dim K As Long
|
|
K = UBound(MyData)
|
|
Dim fs As New FileStream(dokumentfilename, FileMode.OpenOrCreate, FileAccess.Write)
|
|
fs.Write(MyData, 0, K)
|
|
fs.Close()
|
|
fs = Nothing
|
|
Return True
|
|
Catch ex As Exception
|
|
Return False
|
|
Finally
|
|
CB = Nothing
|
|
ds = Nothing
|
|
da = Nothing
|
|
connection.Close()
|
|
connection = Nothing
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
|
|
End If
|
|
End Function
|
|
|
|
Private Function set_druckjobstatus(ByVal alnr As Integer, ByVal status As Integer)
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_set_druckjobstatus"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
Try
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
dtToReturn.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
Private Function get_partner(ByVal alnr As Integer)
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_get_partner"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
Try
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@alnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@bkpar00", SqlDbType.VarChar, 255, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, ""))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Me.lblpartner.Text = scmCmdToExecute.Parameters("@bkpar00").Value
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
dtToReturn.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
Private Function update_aushaendigungsquittung_status(ByVal auslieferungnr As Integer, ByVal status As Integer)
|
|
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_aushaendigungsquittung_update_status"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
Try
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, auslieferungnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.MitarbeiterNr))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
dtToReturn.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
|
|
Private Sub btnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click
|
|
Me.Close()
|
|
End Sub
|
|
End Class
|