เครื่องมือแก้ไข Downcodes จะแสดงวิธีการเขียนโค้ดใน C# เพื่อให้แน่ใจว่ากล่องข้อความ (กล่องข้อความ) ยอมรับเฉพาะการป้อนอักขระภาษาจีนเท่านั้น บทความนี้จะให้รายละเอียดเกี่ยวกับกลยุทธ์หลักหลายประการ รวมถึงการใช้ประโยชน์จากเหตุการณ์การตรวจสอบอินพุต (KeyPress, TextChanged) นิพจน์ทั่วไป และการเข้ารหัสอักขระ (ช่วง Unicode) เราจะรวมตัวอย่างโค้ดเพื่อสำรวจวิธีการใช้นิพจน์ทั่วไปและเหตุการณ์ KeyPress อย่างลึกซึ้งเพื่อจำกัดการป้อนข้อมูลในกล่องข้อความอย่างมีประสิทธิภาพ และสุดท้ายใช้การควบคุมกล่องข้อความที่สมบูรณ์ซึ่งยอมรับเฉพาะการป้อนอักขระภาษาจีนเท่านั้น บทความนี้จะแนะนำแอปพลิเคชันของแอตทริบิวต์ IMESupport และ CustomValidation มอบโซลูชันสำหรับความต้องการการตรวจสอบอินพุตขั้นสูงเพิ่มเติม และมาพร้อมกับคำตอบสำหรับคำถามที่พบบ่อยเพื่อช่วยให้คุณเชี่ยวชาญทักษะนี้ได้อย่างรวดเร็ว
กลยุทธ์หลักในการเขียนโค้ดใน C# เพื่อให้แน่ใจว่ากล่องข้อความ (กล่องข้อความ) ยอมรับเฉพาะการป้อนอักขระภาษาจีนเท่านั้น รวมถึงการใช้เหตุการณ์การตรวจสอบอินพุต นิพจน์ทั่วไป และการเข้ารหัสอักขระ สำหรับการตรวจสอบอินพุต เหตุการณ์ที่ใช้บ่อยที่สุดคือ KeyPress และ TextChanged สามารถใช้นิพจน์ทั่วไปเพื่อจับคู่อักขระภาษาจีนได้อย่างมีประสิทธิภาพ ในแง่ของการเข้ารหัสอักขระ ช่วง Unicode สามารถใช้เพื่อระบุและจำกัดการป้อนอักขระภาษาจีน ด้านล่างนี้ เราจะใช้นิพจน์ทั่วไปเป็นตัวอย่างเพื่ออธิบายรายละเอียดวิธีการใช้ฟังก์ชันนี้
ใช้นิพจน์ทั่วไปเพื่อให้แน่ใจว่ากล่องข้อความยอมรับเฉพาะอักขระภาษาจีน แนวคิดหลักคือการสร้างวัตถุนิพจน์ทั่วไปที่ตรงกับอักขระภาษาจีนทั้งหมด ในภาษา C# ตัวอักษรจีนมักจะอยู่ในช่วงการเข้ารหัส Unicode u4e00-u9fa5 ดังนั้นจึงสามารถเขียนนิพจน์เป็น @[u4e00-u9fa5] ได้ เมื่อใดก็ตามที่ข้อความของกล่องข้อความเปลี่ยนแปลง วิธีการจะดำเนินการโดยใช้นิพจน์ทั่วไปเพื่อตรวจสอบเนื้อหาข้อความ และจะเก็บเฉพาะส่วนของข้อความที่ตรงกับนิพจน์ทั่วไปเท่านั้น
เมื่อข้อความของกล่องข้อความเปลี่ยนแปลง ให้ใช้เหตุการณ์ TextChanged เพื่อทริกเกอร์การตรวจสอบนิพจน์ทั่วไป
ขั้นแรก สร้างตัวจัดการเหตุการณ์ TextChanged สำหรับตัวควบคุมกล่องข้อความ ในโปรแกรมนี้ ให้สร้างออบเจ็กต์นิพจน์ทั่วไปที่จะใช้ตรวจสอบว่าอักขระแต่ละตัวเป็นอักขระจีนหรือไม่ หากเป็นอักขระที่ไม่ใช่ภาษาจีน จะถูกลบออกจากกล่องข้อความ
โมฆะส่วนตัว textBox1_TextChanged (ผู้ส่งวัตถุ EventArgs e)
-
ข้อความสตริง = textBox1.Text;
สตริง validText = ;
foreach (ตัวอักษร c ในข้อความ)
-
ถ้า (Regex.IsMatch(c.ToString(), @^[u4e00-u9fa5]$))
-
ข้อความที่ถูกต้อง += c;
-
-
textBox1.Text = ข้อความที่ถูกต้อง;
textBox1.SelectionStart = validText.Length; // รักษาตำแหน่งเคอร์เซอร์
-
เหตุการณ์ KeyPress สามารถสกัดกั้นการป้อนข้อมูลด้วยแป้นพิมพ์ได้ทันทีเมื่อผู้ใช้ป้อนข้อมูล ให้การตอบรับอย่างทันท่วงที และป้องกันการป้อนอักขระที่ไม่ใช่ภาษาจีน
ในการประมวลผลเหตุการณ์ KeyDown หรือ KeyPress คุณสามารถระบุได้โดยตรงว่าอักขระที่ป้อนสอดคล้องกับช่วงการเข้ารหัสอักขระจีน และยกเลิกการป้อนข้อมูลที่ไม่เหมาะสมเหล่านั้นหรือไม่
โมฆะส่วนตัว textBox1_KeyPress (ผู้ส่งวัตถุ, KeyPressEventArgs e)
-
if (!Regex.IsMatch(e.KeyChar.ToString(), @^[u4e00-u9fa5]$) && e.KeyChar != 'b') // 'b' เป็นคีย์ backspace
-
e.Handled = true; // ป้องกันไม่ให้อักขระเข้าสู่ตัวควบคุม
-
-
แอตทริบิวต์ IMESupport สามารถช่วยผสานรวมตัวแก้ไขวิธีการป้อนข้อมูล (IME) ได้ดียิ่งขึ้น ซึ่งมีความสำคัญมากสำหรับการป้อนอักขระภาษาจีน
ถ้าตัวควบคุมกล่องข้อความรวมตัวแก้ไขวิธีการป้อนข้อมูล คุณสามารถปรับประสบการณ์การป้อนข้อมูลอักขระภาษาจีนให้เหมาะสมได้โดยการตั้งค่าคุณสมบัติ IMESupport เลือกโหมดวิธีการป้อนข้อมูลที่เหมาะสมในการตั้งค่าคุณสมบัติ เช่น การเปิดวิธีการป้อนข้อมูลและการตั้งค่าเป็นโหมดภาษาจีน
textBox1.ImeMode = ImeMode.On;
สำหรับกฎอินพุตที่ซับซ้อนยิ่งขึ้น สามารถใช้ CustomValidation เพื่อใช้ตรรกะการตรวจสอบอักขระขั้นสูงได้
ในบางสถานการณ์ของแอปพลิเคชัน จำเป็นต้องป้อนเฉพาะอักขระภาษาจีนที่เฉพาะเจาะจง หรือมีข้อกำหนดกฎการป้อนข้อมูลเพิ่มเติม ในกรณีนี้ สามารถใช้ตรรกะที่ซับซ้อนมากขึ้นผ่านวิธีการตรวจสอบแบบกำหนดเอง
บูลส่วนตัว CustomChineseValidation (ถ่าน c)
-
// สามารถเพิ่มตรรกะการตรวจหาตัวอักษรจีนที่ซับซ้อนกว่านี้ได้ เช่น การพิจารณาว่าคำนั้นอยู่ในคำศัพท์เฉพาะหรือไม่ เป็นต้น
กลับ Regex.IsMatch(c.ToString(), @^[u4e00-u9fa5]$);
-
ถัดไปเรียกวิธีการตรวจสอบนี้ในเหตุการณ์กล่องข้อความ:
โมฆะส่วนตัว textBox1_KeyPress (ผู้ส่งวัตถุ, KeyPressEventArgs e)
-
ถ้า (!CustomChineseValidation(e.KeyChar) && e.KeyChar != 'b')
-
e.Handled = จริง;
-
-
ในที่สุด วิธีการข้างต้นจะรวมกันเพื่อแสดงตัวอย่างที่สมบูรณ์:
สาธารณะ Form1()
-
เตรียมใช้งานส่วนประกอบ();
textBox1.ImeMode = ImeMode.On; // เปิดใช้งานตัวแก้ไขวิธีการป้อนข้อมูลและตั้งค่าเป็นโหมดภาษาจีน
textBox1.KeyPress += textBox1_KeyPress; // สมัครสมาชิกกิจกรรม KeyPress
textBox1.TextChanged += textBox1_TextChanged; // สมัครสมาชิกเหตุการณ์ TextChanged
-
โมฆะส่วนตัว textBox1_KeyPress (ผู้ส่งวัตถุ, KeyPressEventArgs e)
-
// ใช้ Custom ChineseValidation เพื่อจัดการเหตุการณ์ KeyPress เพื่อป้องกันการป้อนอักขระที่ไม่ใช่ภาษาจีนอย่างสมบูรณ์
ถ้า (!CustomChineseValidation(e.KeyChar) && e.KeyChar != 'b')
-
e.Handled = จริง;
-
-
โมฆะส่วนตัว textBox1_TextChanged (ผู้ส่งวัตถุ EventArgs e)
-
// ใช้การประมวลผลเหตุการณ์ TextChanged เพื่อให้แน่ใจว่าเนื้อหาข้อความที่วางนั้นถูกต้องเช่นกัน
textBox1.Text = สตริงใหม่ (textBox1.Text.Where(c => Custom ChineseValidation(c)).ToArray());
textBox1.SelectionStart = textBox1.Text.Length;
-
บูลส่วนตัว CustomChineseValidation (ถ่าน c)
-
// คุณสามารถขยายกฎการตรวจสอบอักขระภาษาจีนได้ที่นี่
กลับ Regex.IsMatch(c.ToString(), @^[u4e00-u9fa5]$);
-
ด้วยวิธีนี้ เราได้สร้างตัวควบคุมกล่องข้อความที่อนุญาตให้ผู้ใช้สามารถป้อนอักขระภาษาจีนได้สำเร็จเท่านั้น การใช้กลยุทธ์ข้างต้นร่วมกันสามารถรับประกันความถูกต้องของเนื้อหาในช่องป้อนข้อมูลได้อย่างมีประสิทธิภาพ และมอบประสบการณ์ผู้ใช้ที่ดีขึ้น
1. จะใช้ C# เพื่อเขียนโค้ดอย่างไรให้ TextBox สามารถป้อนได้เฉพาะตัวอักษรจีนเท่านั้น
ตอบ: คุณสามารถใช้นิพจน์ทั่วไปเพื่อจำกัดกล่องข้อความให้ป้อนเฉพาะอักขระภาษาจีนได้ เพิ่มโค้ดในเหตุการณ์ TextChanged ของกล่องข้อความเพื่อตรวจสอบว่าข้อความที่ป้อนประกอบด้วยอักขระภาษาจีนเท่านั้นผ่านนิพจน์ทั่วไปหรือไม่ หากไม่เป็นไปตามข้อกำหนด คุณสามารถล้างกล่องข้อความหรือแจ้งให้ผู้ใช้ป้อนใหม่ได้
B: อีกวิธีหนึ่งคือการป้องกันการป้อนอักขระที่ไม่ใช่ภาษาจีนโดยจัดการเหตุการณ์ KeyPress ของกล่องข้อความ ในเหตุการณ์ KeyPress ให้ตรวจสอบอักขระของคีย์ หากไม่ใช่อักขระภาษาจีน ให้ตั้งค่าแอตทริบิวต์ Handled เป็น true เพื่อป้องกันการป้อนอักขระที่ไม่ใช่ภาษาจีน
C: หากคุณต้องการให้กล่องข้อความยอมรับการป้อนอักขระภาษาจีนเท่านั้น คุณยังสามารถใช้โหมด IME ได้ ด้วยการตั้งค่าคุณสมบัติ ImeMode ของกล่องข้อความเป็น ImeMode.On คุณสามารถมั่นใจได้ว่าสามารถป้อนได้เฉพาะอักขระภาษาจีนเท่านั้น แต่โปรดทราบว่าวิธีนี้ใช้ได้กับระบบปฏิบัติการที่รองรับวิธีการป้อนข้อมูลภาษาจีนเท่านั้น
2. ใน C# ฉันจะจำกัดผู้ใช้ให้ป้อนเฉพาะตัวอักษรจีนในกล่องข้อความได้อย่างไร
ตอบ: คุณสามารถเขียนโค้ดในเหตุการณ์ TextChanged ของกล่องข้อความเพื่อจำกัดผู้ใช้ให้ป้อนเฉพาะอักขระภาษาจีนเท่านั้น ใช้ช่วง Unicode เพื่อตรวจสอบว่าอักขระที่ป้อนเป็นอักขระจีนหรือไม่ และล้างกล่องข้อความหรือเตือนให้ผู้ใช้ป้อนอีกครั้งเมื่อไม่ตรงตามเงื่อนไข เพื่อให้แน่ใจว่ากล่องข้อความจะมีได้เฉพาะอักขระภาษาจีนเท่านั้น
B: อีกวิธีหนึ่งคือการใช้คลาส InputLanguage เพื่อจำกัดภาษาอินพุตที่กล่องข้อความยอมรับ ด้วยการตั้งค่าคุณสมบัติ InputLanguage ของกล่องข้อความเป็นภาษาจีน คุณสามารถมั่นใจได้ว่าจะสามารถป้อนได้เฉพาะอักขระที่ใช้วิธีการป้อนข้อมูลภาษาจีนเท่านั้น แต่โปรดทราบว่าวิธีนี้ใช้ได้เฉพาะเมื่อมีการติดตั้งวิธีการป้อนข้อมูลภาษาจีนในระบบปฏิบัติการเท่านั้น
C: หากความต้องการของคุณคือยอมรับเฉพาะการป้อนข้อมูลตัวอักษรจีน คุณยังสามารถใช้การควบคุมแบบกำหนดเองได้ ขยายตัวควบคุมกล่องข้อความเพื่ออนุญาตให้ป้อนเฉพาะอักขระภาษาจีนและให้คำติชมแก่ผู้ใช้เมื่อไม่เป็นไปตามข้อกำหนด แนวทางนี้ปรับแต่งได้และยืดหยุ่นมากขึ้น
3. จะใช้ C# เพื่อเขียนโค้ดเพื่อจำกัดผู้ใช้ให้ป้อนเฉพาะตัวอักษรจีนในกล่องข้อความได้อย่างไร
ตอบ: คุณสามารถใช้การตรวจสอบอักขระเพื่อจำกัดอินพุตที่กล่องข้อความยอมรับได้ เมื่อสมัครรับเหตุการณ์ KeyPress ของ TextBox ให้ตรวจสอบว่าอักขระอินพุตเป็นอักขระจีนหรือไม่ หากไม่ใช่ตัวอักษรจีน การป้อนตัวอักษรจะถูกบล็อก และผู้ใช้จะถูกเตือนว่าสามารถป้อนได้เฉพาะตัวอักษรจีนเท่านั้น
B: อีกวิธีหนึ่งคือการใช้โหมด IME ด้วยการตั้งค่าคุณสมบัติ ImeMode ของกล่องข้อความเป็น ImeMode.On คุณสามารถมั่นใจได้ว่าสามารถป้อนได้เฉพาะอักขระภาษาจีนเท่านั้น แต่โปรดทราบว่าโหมด IME ใช้งานได้เฉพาะกับระบบปฏิบัติการที่รองรับวิธีการป้อนข้อมูลภาษาจีนเท่านั้น
C: หากคุณต้องการกฎการตรวจสอบที่ซับซ้อนมากขึ้น คุณสามารถใช้นิพจน์ทั่วไปเพื่อตรวจสอบว่าข้อความที่ป้อนประกอบด้วยอักขระภาษาจีนเท่านั้นหรือไม่ ในเหตุการณ์ TextChanged ของกล่องข้อความ ให้ใช้นิพจน์ทั่วไปเพื่อตรวจสอบความถูกต้องของข้อความที่ป้อนและให้ข้อเสนอแนะแก่ผู้ใช้หากไม่ตรงตามเงื่อนไข วิธีการนี้มีประโยชน์ในการตรวจสอบความสมบูรณ์ของอินพุต
ฉันหวังว่าวิธีการเหล่านี้ที่โปรแกรมแก้ไข Downcodes มอบให้จะช่วยให้คุณใช้ข้อจำกัดการป้อนอักขระจีนในกล่องข้อความ C# ได้อย่างง่ายดาย หากคุณมีคำถามใด ๆ โปรดฝากข้อความไว้