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

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

[VB.NET] การเคลียค่าใน Controls หลาย ๆ ตัวในฟอร์มพร้อมกัน เช่น Textbox และ Label

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

11

กระทู้

31

โพสต์

427

เครดิต

ผู้ดูแลบอร์ด

Rank: 7Rank: 7Rank: 7

เครดิต
427

แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2018-5-10 13:49

หลาย ๆ ท่านคงผ่านการเคลียค่า Control (Textbox & Label) หลายตัวพร้อมกันมาแล้วในการเขียนโปรแกรม
โดยใช้คำสั่งเบื้องต้นมาแล้ว เช่น

Textbox ==> Textbox1.Clear() หรือ TextBox1.Text = "" เป็นต้น
Label     ==> Label1.Text=""

แต่ถ้าหากการเคลียค่าใน Textbox หรือ Label หลาย ๆ ตัวพร้อมกันก็ต้องเขียน สั่งทีละตัวจนกว่าจะครบ
ซึ่งถ้าจะนับโค้ดเฉพาะเคลียค่า Textbox หรือ Label ทั้งโปรเจคคงนับได้หลายร้อยจนถึงหลาย ๆ พันบรรทัด
นี่เป็นเฉพาะการเคลียค่าคอนโทร์ลเท่านั้น ยังไม่รวมเนื้อหาหรือวิธีการและขั้นตอนการประมวลผลของตัวโปรแกรมเลย
และจุดนี้เองทำให้เราต้องมาเขียนโค้ดซ้ำซ้อนและใช้เวลาค่อนข้างมากในการจัดการกับคอนโทรล์เหล่านี้

วันนี้ผมจึงขอนำเสนอวิธีการจัดการกับคอนโทรล์เหล่านี้อีกรูปแบบหนึ่ง เขียนครั้งเดียวสามารถใช้ได้ทั้งโปรเจคเลย หรือยังสามารถทำเป็น .dll ไฟล์ Import เข้ามาใช้ก็ได้

การจัดการกับคอนโทรล์เหล่านี้ผมมีเทคนิคดังนี้
- จัดกลุ่มคอนโทรล์ตามประเภทของมัน เช่น Textbox หรือ Label
- ตั้งชื่อเฉพาะให้กับคอนโทรล์ในแต่ละกลุ่มที่ต้องการเคลียค่า เช่น
     Textbox ==> txtตามด้วยชื่อ หรือ tตามด้วยชื่อ
     Label     ==> Labelตามด้วยชื่อ หรือ lตามด้วยชื่อ
(ตรงชื่อท่านสามารถตั้งตั้งได้หลายกลุ่มเพื่อให้ง่ายและสะดวกในการจัดการ แต่ต้องแยกให้ชัดเจนออกจากกลุ่มคอนโทรล์เดียวกันที่ไม่ต้องการเคลียค่าหรือจัดการกับมัน )
เพราะที่ทำไปนี้คือผมใช้หลักการจัดการกับคอนโทรล์เหล่านั้น โดยเฉพาะเจาะจง เช่น ต้องการเคลียค่า Textbox ที่มีชื่อของ Textbox เริ่มต้นด้วย txt* เท่านั้น
หาก Textbox ตัวไหนที่อยู่บนฟอร์มที่เราไม่ต้องการจัดการกับมันก็ห้ามตั้งชื่อด้วย txtตามด้วยชื่อเด็ดขาด เพราะคำสั่งจะไปกระทำกับคอนโทรล์เหล่านี้ด้วย

ตัวอย่างฟอร์ม


1. เคลียเฉพาะ Textbox ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย Text เท่านั้น


2. เคลียเฉพาะ Textbox ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย Txt เท่านั้น


3. เคลียเฉพาะ Label ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย LabelV เท่านั้น (สงวนชื่อ Label ให้กับ Label ที่ไม่ต้องการให้คำสั่งไปจัดการกับคอนโทรล์เหล่านี้)


4. เคลียเฉพาะ Label ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย lb เท่านั้น (สงวนชื่อ Label ให้กับ Label ที่ไม่ต้องการให้คำสั่งไปจัดการกับคอนโทรล์เหล่านี้)


ตัวอย่าง Code จัดการคอนโทรล์ (อยู่ในรูปแบบ Class) ท่านดาวน์โหลดไปดูเองนะครับ
ตัวอย่างโค้ดที่แต่ละฟอร์มเรียกใช้งาน
  1. Public Class Form1

  2.     ' Form Load
  3.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.         btRefTextbox_Name_Click(sender, e)
  5.     End Sub

  6.     ' แสดงชื่อ Textbox ตามที่ระบุอีกครั้ง
  7.     Private Sub btRefTextbox_Name_Click(sender As Object, e As EventArgs) Handles btRefTextbox_Name.Click

  8.         Dim txt As New ClsClear_Contorl()
  9.         txt.Refresh_Textbox(Me, "Text") ' แสดงชื่อ Textbox = Textbox.Name ตาม Control Textbox ที่มีชื่อเริ่มต้นด้วย Text
  10.         txt.Refresh_Textbox(Me, "Txt") ' แสดงชื่อ Textbox = Textbox.Name ตาม Control Textbox ที่มีชื่อเริ่มต้นด้วย Txt

  11.     End Sub

  12.     ' แสดงชื่อ Label ตามที่ระบุอีกครั้ง
  13.     Private Sub btRefLabel_Name_Click(sender As Object, e As EventArgs) Handles btRefLabel_Name.Click

  14.         Dim lb As New ClsClear_Contorl()
  15.         lb.Refresh_Label(Me, "lb") ' แสดงชื่อ Label = Label.Name ตาม Control Label ที่มีชื่อเริ่มต้นด้วย lb
  16.         lb.Refresh_Label(Me, "LabelV") ' แสดงชื่อ Label = Label.Name ตาม Control Label ที่มีชื่อเริ่มต้นด้วย LabelV

  17.     End Sub

  18. #Region "Clear specific of textbox"

  19.     ' เคลียค่า Textbox ที่มีชื่อขึ้นต้นด้วย Text เท่านั้น
  20.     Private Sub btClsTextBox_Click(sender As Object, e As EventArgs) Handles btClsTextBox.Click

  21.         Dim txt As New ClsClear_Contorl()
  22.         txt.Cls_Textbox(Me, "Text") ' เคลืยค่า Control Textbox ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย Text

  23.     End Sub

  24.     ' เคลียค่า Textbox ที่มีชื่อขึ้นต้นด้วย Txt เท่านั้น
  25.     Private Sub btClsTxtBox_Click(sender As Object, e As EventArgs) Handles btClsTxtBox.Click

  26.         Dim txt As New ClsClear_Contorl()
  27.         txt.Cls_Textbox(Me, "Txt") ' เคลืยค่า Control Textbox ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย Txt

  28.     End Sub

  29. #End Region

  30. #Region "Clear specific of label"

  31.     ' เคลียค่า Label ที่มีชื่อขึ้นต้นด้วย LabelV เท่านั้น
  32.     Private Sub btClsLabelV_Click(sender As Object, e As EventArgs) Handles btClsLabelV.Click

  33.         Dim lb As New ClsClear_Contorl()
  34.         lb.Cls_Label(Me, "LabelV") ' เคลืยค่า Control Label ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย LabelV

  35.     End Sub

  36.     ' เคลียค่า Label ที่มีชื่อขึ้นต้นด้วย lb เท่านั้น
  37.     Private Sub btClslb_Click(sender As Object, e As EventArgs) Handles btClslb.Click

  38.         Dim lb As New ClsClear_Contorl()
  39.         lb.Cls_Label(Me, "lb") ' เคลืยค่า Control Label ทั้งหมดในฟอร์มที่มีชื่อขึ้นต้นด้วย lb

  40.     End Sub

  41. #End Region


  42. End Class
คัดลอกไปที่คลิปบอร์ด

ท่านที่สนใจสามารถ ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET2017 ได้ที่นี่


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

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

x

0

กระทู้

51

โพสต์

233

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
233
โพสต์ 2018-5-30 09:11:50 | ดูโพสต์ทั้งหมด

ขอบคุณครับ puklit  และ g2gnet.com ด้วยครับ..  

0

กระทู้

33

โพสต์

372

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
372
โพสต์ 2022-2-24 00:14:24 | ดูโพสต์ทั้งหมด

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

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

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

GMT+7, 2024-4-19 21:45 , Processed in 0.284138 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

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