111,125
社区成员
发帖
与我相关
我的任务
分享
Private Sub InitingProducts()
'tbClasses.TabPages.Clear()
Dim t As System.Threading.Thread
t = New Thread(AddressOf InitTabClass)
t.IsBackground = True
t.Start()
End Sub
Private Sub InsertPage(ByRef page As TabPage)
tbClasses.TabPages.Add(page)
End Sub
Private Sub InitTabClass()
If Threading.Monitor.TryEnter(_SycObject, 200) Then
'200毫秒内获得锁既刷新
'删除现有的
Me.Invoke(New Execute(AddressOf tbClasses.TabPages.Clear))
Dim conn As OleDbConnection = New OleDbConnection(_ConnectionString)
Dim command As OleDbCommand
Dim strSql As StringBuilder = New StringBuilder()
strSql.Append("select ClassNo, Named from PRODUCT_CLASS where status<>'D'")
Try
conn.Open()
command = New OleDbCommand(strSql.ToString())
command.Connection = conn
Using reader As OleDbDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim page As TabPage
While reader.Read
page = New TabPage(reader.GetString(1))
page.Name = reader.GetString(0)
page.BackColor = Color.White
InitProductContainer(page, conn)
Me.Invoke(_PageInserter, page)
End While
End Using
Catch ex As Exception
frmMessageBox.ShowBox(ex.Message, ErrTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
If Not conn Is Nothing Then
conn.Dispose()
End If
Threading.Monitor.Exit(_SycObject)
End Try
End If
End Sub
Private Sub InitProductContainer(ByRef page As TabPage, ByVal conn As OleDbConnection)
For Each controlItem As Control In page.Controls
If controlItem.GetType() Is GetType(ListView) Then
page.Controls.Remove(controlItem)
End If
Next
Dim productContainer As New ListView()
AddHandler productContainer.Click, AddressOf ProductList_DoubleClick
productContainer.Scrollable = True
productContainer.Dock = DockStyle.Fill
productContainer.View = _ProductViewStyle
productContainer.Name = page.Text & "[" & page.Name + "]"
InitProductList(page.Name, productContainer, conn)
page.Controls.Add(productContainer)
End Sub
Private Sub InitProductList(ByVal classId As String, ByRef listContainer As ListView, ByVal conn As OleDbConnection)
Dim command As OleDbCommand
Dim strSql As StringBuilder = New StringBuilder()
strSql.Append("select Named, Barcode from PRODUCTS where ClassNo=@ClassNo and status<>'D' and Account = @Account")
Dim w As Int32 = CInt(Math.Floor((tbClasses.Width - 20) / 2))
listContainer.Columns.Add("商品名称", w, HorizontalAlignment.Left)
listContainer.Columns.Add("条码", w - 50, HorizontalAlignment.Left)
listContainer.LargeImageList = ImageList1
listContainer.SmallImageList = ImageList2
Dim param0 As New OleDbParameter("@ClassNo", classId)
Dim param1 As New OleDbParameter("@Account", GAccount)
command = New OleDbCommand(strSql.ToString())
command.Connection = conn
command.Parameters.Add(param0)
command.Parameters.Add(param1)
Try
Using dr As OleDbDataReader = command.ExecuteReader()
Dim item As ListViewItem
While dr.Read()
item = New ListViewItem(dr.GetString(0))
item.SubItems.Add(dr.GetString(1))
item.ImageKey = "item4.png"
listContainer.Items.Add(item)
End While
End Using
Catch
End Try
End Sub