[VB.NET] การใช้งาน ListView ของ MaterialSkin2
การใช้งาน ListView ของ MaterialSkin2 ซึ่งจะใช้งานได้สำหรับ .NET Framework 4.5 ขึ้นไป ...http://www.g2gsoft.com/webboard/images/VBNet/materiallistview.png
ดาวน์โหลดโค้ดต้นฉบับ Visual Basic .NET (2017) ได้ที่นี่ ...
มาดูโค้ดกันเถอะ ...
'// Download packages.
'// https://www.nuget.org/packages/MaterialSkin.2/
Imports System.Data.OleDb
Imports MaterialSkin
Imports MaterialSkin.Controls
Public Class frmMaterialSkinListview
Private Sub frmMaterialSkinListview_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If Not ConnectDataBase() Then
MessageBox.Show("Can't connect Northwind.accdb MS Access DataBase.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Application.Exit()
End If
With cmbColorTheme
.Items.Add("Orange")
.Items.Add("Green")
.Items.Add("Light Blue")
.Items.Add("Cyan")
.Items.Add("Gray")
End With
cmbColorTheme.SelectedIndex = 1
lblRecordCount.Text = ""
'// MaterialTextBox Properties. (Which you can customize at Design Time.)
With txtSearch
.Hint = "Type something to search and press Enter."
.UseTallSize = True
.UseAccent = True
.Anchor = AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Top + AnchorStyles.Bottom
End With
'// Show all data.
Call RetrieveData(False)
End Sub
' / --------------------------------------------------------------------------------
' / Collect all searches, come in the same place.
' / blnSearch = True, Show that the search results.
' / blnSearch is set default to False, for show all records.
Sub RetrieveData(Optional ByVal blnSearch As Boolean = False)
strSQL =
" SELECT Orders.OrderID, Customers.CompanyName, Customers.ContactName, Customers.Address, Customers.City, " &
" Customers.Region, Customers.PostalCode, Customers.Country, Orders.OrderDate, Orders.Freight, Orders.ShipName " &
" FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID "
If blnSearch Then
strSQL = strSQL &
" WHERE " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" & " OR " &
" " & " Like '%" & txtSearch.Text & "%'" &
" ORDER BY OrderID "
Else
strSQL = strSQL & " ORDER BY OrderID "
End If
'//
Call SetupListView()
Try
If Conn.State = ConnectionState.Closed Then Conn.Open()
Cmd = New OleDb.OleDbCommand(strSQL, Conn)
DR = Cmd.ExecuteReader()
Dim iRow As Integer = 1 '// Counter
Do While DR.Read()
Dim NewItem As New ListViewItem(iRow)
With NewItem.SubItems
.Add(DR.Item("OrderID").ToString)
.Add(DR.Item("CompanyName").ToString)
.Add(DR.Item("ContactName").ToString)
.Add(Convert.ToDateTime(DR.Item("OrderDate").ToString))
.Add(DR.Item("Freight").ToString)
.Add(DR.Item("Country").ToString)
End With
lvwData.Items.Add(NewItem)
iRow += 1
Loop
lblRecordCount.Text = "Total: " & Format(lvwData.Items.Count, "#,##0") & " Records."
DR.Close()
Cmd.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
txtSearch.Text = String.Empty
txtSearch.Focus()
End Sub
Private Sub txtSearch_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSearch.KeyPress
If Trim(Me.txtSearch.Text) = "" Or Len(Trim(txtSearch.Text)) = 0 Then Exit Sub
If Asc(e.KeyChar) = 13 Then
'// No beep.
e.Handled = True
'/ Retrieve Data(True) means that it is searching for information which user want.
Call RetrieveData(True)
End If
End Sub
' / ----------------------------------------------------------------------------------------
' / Initailize MaterialListView Control
Sub SetupListView()
'// Properties of MaterialListView.
With lvwData
.Clear()
.View = View.Details
.GridLines = True
.FullRowSelect = True
.HideSelection = False
.MultiSelect = False
.GridLines = True
.HoverSelection = True
.OwnerDraw = True
.Font = New Font("Roboto", 22, FontStyle.Regular) '// Row height adjustment Use the font size instead.
' 1st Column Index = 0
.Columns.Add("#Item", 75)
.Columns.Add("OrderID", 100)
.Columns.Add("CompanyName", lvwData.Width \ 6 - 5)
.Columns.Add("ContactName", lvwData.Width \ 6 - 5)
.Columns.Add("OrderDate", lvwData.Width \ 6 - 5)
.Columns.Add("Freight", lvwData.Width \ 6 - 10)
.Columns.Add("Country", lvwData.Width \ 6 - 10)
End With
End Sub
'// Select Color Scheme
Private Sub cmbColorTheme_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbColorTheme.SelectedIndexChanged
Select Case cmbColorTheme.SelectedIndex
Case 0
SkinManager.ColorScheme = New ColorScheme(Primary.Amber500, Primary.BlueGrey900, Primary.BlueGrey500, Accent.Red700, TextShade.WHITE)
Case 1
SkinManager.ColorScheme = New ColorScheme(Primary.Green600, Primary.Green700, Primary.Green200, Accent.Orange700, TextShade.WHITE)
Case 2
SkinManager.ColorScheme = New ColorScheme(Primary.LightBlue600, Primary.LightBlue700, Primary.Green200, Accent.Purple700, TextShade.WHITE)
Case 3
SkinManager.ColorScheme = New ColorScheme(Primary.Cyan500, Primary.Cyan700, Primary.Cyan100, Accent.Blue700, TextShade.WHITE)
Case 4
SkinManager.ColorScheme = New ColorScheme(Primary.Grey600, Primary.Grey700, Primary.Grey100, Accent.Teal700, TextShade.WHITE)
End Select
txtSearch.Focus()
End Sub
'// Doublick mouse event for show OrderID.
Private Sub lvwData_DoubleClick(sender As Object, e As EventArgs) Handles lvwData.DoubleClick
MsgBox("Order ID: " & lvwData.SelectedItems(0).SubItems(1).Text)
End Sub
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
Call RetrieveData(False) '// Show all data.
End Sub
Private Sub frmMaterialSkinListview_Resize(sender As Object, e As EventArgs) Handles Me.Resize
If lvwData.Items.Count = 0 Then Return
With lvwData
.Columns(0).Width = 75
.Columns(1).Width = 100
.Columns(2).Width = lvwData.Width \ 6 - 5
.Columns(3).Width = lvwData.Width \ 6 - 5
.Columns(4).Width = lvwData.Width \ 6 - 10
.Columns(5).Width = lvwData.Width \ 6 - 10
.Columns(6).Width = lvwData.Width \ 6 - 10
End With
End Sub
Private Sub frmMaterialSkinListview_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Me.Dispose()
GC.SuppressFinalize(Me)
Application.Exit()
End Sub
End Class
หน้า:
[1]