thongkorn โพสต์ 2023-8-29 11:47:09

[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]
ดูในรูปแบบกติ: [VB.NET] การใช้งาน ListView ของ MaterialSkin2