ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 1815|ตอบกลับ: 0

[VB.NET] ทำความเข้าใจและใช้งาน List (Of Object)

[คัดลอกลิงก์]

319

กระทู้

511

โพสต์

6524

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6524




สืบเนื่องจากการที่แอดมินได้แจกโค้ด VB.NET กับการอ่านเขียนข้อมูลลงใน Google Sheets ซึ่งจะมองเห็นชีตเป็นเหมือนแผ่นข้อมูล หรือตารางข้อมูลนั่นเอง แต่การเข้าถึงชีต ไม่สามารถกระทำได้เหมือนทำกับฐานข้อมูล เราจึงมองชีตเป็นแบบ Array หรือ List ในการเข้าถึงข้อมูลได้จึงต้องทำแบบ Sequential หรือแบบเรียงลำดับ ด้วยการใช้ Index หรือแถวลำดับนั่นเอง จึงต้องนำ List (Of Object) เข้ามาช่วย ...

List (Of Object) คือรูปแบบ List ใน Visual Basic .NET เพื่อใช้เก็บข้อมูลในรูปแบบของ Object ซึ่งจะไม่ระบุประเภทข้อมูลเอาไว้ล่วงหน้า (Non-Generic) ซึ่งทำให้สามารถเก็บข้อมูลประเภทต่างๆได้ใน List เดียว ข้อมูลที่ว่าก็คือ ข้อความ, ตัวเลขจำนวนเต็มหรือทศนิยม, วันเดือนปี, บูลีน หรือแม้แต่ Class ...

มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Public Class frmListOfObject

  2.     '// Example of a class used in a list.
  3.     Class CustomClass
  4.         Public Overrides Function ToString() As String
  5.             Return "I'm a custom class!"
  6.         End Function
  7.     End Class

  8.     ' / --------------------------------------------------------------------------------
  9.     Private Sub btnSampleOne_Click(sender As System.Object, e As System.EventArgs) Handles btnSampleOne.Click
  10.         TextBox1.Clear()
  11.         TextBox2.Clear()
  12.         'Dim ListObject As List(Of Object) = New List(Of Object)()
  13.         Dim ListObject As New List(Of Object)
  14.         '// เพิ่มข้อมูลลงในลิสต์
  15.         ListObject.Add("Hello, World!")
  16.         ListObject.Add(42)
  17.         ListObject.Add(3.14)
  18.         ListObject.Add(DateTime.Now)
  19.         ListObject.Add(True)
  20.         ListObject.Add(New CustomClass())
  21.         '// Use String.Join to combine the items in a List into a single message.
  22.         TextBox1.Text = String.Join(vbNewLine, ListObject)
  23.         TextBox1.Text = TextBox1.Text & vbNewLine & "Total : " & ListObject.Count
  24.     End Sub

  25.     ' / --------------------------------------------------------------------------------
  26.     Private Sub btnSampleTwo_Click(sender As System.Object, e As System.EventArgs) Handles btnSampleTwo.Click
  27.         TextBox1.Clear()
  28.         TextBox2.Clear()
  29.         '// Create a List(Of Object) with two columns.
  30.         Dim ListObject As New List(Of Object)
  31.         '// Add data to the two-column list.
  32.         ListObject.Add(New List(Of Object) From {"Name", "Age"})
  33.         ListObject.Add(New List(Of Object) From {"John", 30})
  34.         ListObject.Add(New List(Of Object) From {"Alice", 25})
  35.         ListObject.Add(New List(Of Object) From {"Bob", 35})
  36.         '// Looping data in a list.
  37.         For Each row As List(Of Object) In ListObject
  38.             TextBox1.Text = TextBox1.Text & row(0) & vbTab & row(1) & vbNewLine
  39.         Next
  40.         TextBox1.Text = TextBox1.Text & vbNewLine & "Total : " & ListObject.Count
  41.     End Sub

  42.     ' / --------------------------------------------------------------------------------
  43.     ' / ADD
  44.     ' / --------------------------------------------------------------------------------
  45.     Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
  46.         TextBox1.Clear()
  47.         TextBox2.Clear()
  48.         '// Create a List(Of Object) with two columns.
  49.         Dim ListObject As New List(Of Object)
  50.         '// Add members to the list.
  51.         ListObject.Add(New List(Of Object) From {"Name", "Age"})
  52.         Dim row1 As New List(Of Object) From {"John", 25}
  53.         Dim row2 As New List(Of Object) From {"Alice", 30}
  54.         Dim row3 As New List(Of Object) From {"Bob", 35}
  55.         ListObject.Add(row1)
  56.         ListObject.Add(row2)
  57.         ListObject.Add(row3)
  58.         '// Display members.
  59.         Call DisplayList(ListObject)
  60.         '// Input new data to List.
  61.         Dim Name As String = InputBox("Enter your name:", "User Input", "Name")
  62.         Dim Age As String = InputBox("Enter your age:", "User Input", "30")
  63.         Dim NewRow As New List(Of Object) From {Name, Age}
  64.         '// Add a new row.
  65.         ListObject.Add(NewRow)
  66.         '// Show update data in the list.
  67.         TextBox2.Text = TextBox1.Text & Name & vbTab & Age & vbNewLine
  68.     End Sub

  69.     ' / --------------------------------------------------------------------------------
  70.     ' / EDIT
  71.     ' / --------------------------------------------------------------------------------
  72.     Private Sub btnEdit_Click(sender As System.Object, e As System.EventArgs) Handles btnEdit.Click
  73.         TextBox1.Clear()
  74.         TextBox2.Clear()
  75.         '// Create a List(Of Object) with two columns.
  76.         Dim ListObject As New List(Of Object)
  77.         '// Add data to the two-column list.
  78.         With ListObject
  79.             .Add(New List(Of Object) From {"Name", "Age"})
  80.             .Add(New List(Of Object) From {"John", 30})
  81.             .Add(New List(Of Object) From {"Alice", 25})
  82.             .Add(New List(Of Object) From {"Bob", 35})
  83.         End With
  84.         '// Show data in list.
  85.         Call DisplayList(ListObject)
  86.         '// Select the row index you want to edit.
  87.         Dim RowNum As String = InputBox("Enter number of row to edit:", "User Input", "0")
  88.         If String.IsNullOrEmpty(RowNum) Then Return
  89.         '// Check if the row number is within the valid range of indices in the list.
  90.         If RowNum >= 0 AndAlso RowNum < ListObject.Count Then
  91.             '// Get the data for row to edit.
  92.             Dim RowEdit As List(Of Object) = ListObject(RowNum)
  93.             '// Prompt the user to edit the values.
  94.             Dim NewName As String = InputBox("Enter new name :", "Edit Name", RowEdit(0).ToString())
  95.             Dim NewAge As String = InputBox("Enter new age :", "Edit Age", RowEdit(1).ToString())
  96.             If String.IsNullOrEmpty(NewName) OrElse String.IsNullOrEmpty(NewAge) Then
  97.                 MessageBox.Show("User canceled or entered invalid input.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  98.                 Return
  99.             End If
  100.             '// Update the values in the row.
  101.             RowEdit(0) = NewName
  102.             RowEdit(1) = NewAge
  103.             '// Display update data list into TextBox2.
  104.             For Each row As List(Of Object) In ListObject
  105.                 TextBox2.Text = TextBox2.Text & row(0) & vbTab & row(1) & vbNewLine
  106.             Next
  107.         Else
  108.             MessageBox.Show("The specified row does not exist in the list.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  109.         End If
  110.     End Sub

  111.     ' / --------------------------------------------------------------------------------
  112.     ' / REMOVE
  113.     ' / --------------------------------------------------------------------------------
  114.     Private Sub btnRemove_Click(sender As System.Object, e As System.EventArgs) Handles btnRemove.Click
  115.         TextBox1.Clear()
  116.         TextBox2.Clear()
  117.         '// Create a List(Of Object) with two columns.
  118.         Dim ListObject As New List(Of Object)
  119.         ListObject.Add(New List(Of Object) From {"Name", "Age"})
  120.         Dim row1 As New List(Of Object) From {"John", 25}
  121.         Dim row2 As New List(Of Object) From {"Alice", 30}
  122.         Dim row3 As New List(Of Object) From {"Bob", 35}
  123.         '// Add members to the list.
  124.         ListObject.Add(row1)
  125.         ListObject.Add(row2)
  126.         ListObject.Add(row3)
  127.         Call DisplayList(ListObject)
  128.         '// Select the row index you want to remove.
  129.         Dim RowNum As String = InputBox("Enter number of row to remove:", "User Input", "0")
  130.         If String.IsNullOrEmpty(RowNum) Then Return
  131.         '// Check if the row number is within the valid range of indices in the list.
  132.         If RowNum >= 0 AndAlso RowNum < ListObject.Count Then
  133.             ListObject.RemoveAt(RowNum) ' Remove the row at index.
  134.             '// Display update data list into TextBox2.
  135.             For Each row As List(Of Object) In ListObject
  136.                 TextBox2.Text = TextBox2.Text & row(0) & vbTab & row(1) & vbNewLine
  137.             Next
  138.         Else
  139.             MessageBox.Show("The specified row does not exist in the list.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  140.         End If
  141.     End Sub

  142.     ' / --------------------------------------------------------------------------------
  143.     Private Sub DisplayList(List As List(Of Object))
  144.         For Each row As List(Of Object) In List
  145.             TextBox1.Text = TextBox1.Text & row(0) & vbTab & row(1) & vbNewLine
  146.         Next
  147.     End Sub

  148.     Private Sub frmListOfObject_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  149.         Me.Dispose()
  150.         GC.SuppressFinalize(Me)
  151.         End
  152.     End Sub
  153. End Class
คัดลอกไปที่คลิปบอร์ด


ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-1 06:49 , Processed in 0.102645 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้