งานที่มอบหมาย ครูประภาส

บทความประกอบการเรียนรู้ => เทคนิคการอินเตอร์เฟส Visual C# => ข้อความที่เริ่มโดย: admin ที่ กันยายน 16, 2018, 03:12:49 PM

หัวข้อ: เรียนรู้ครั้งที่ 4 [การเขียนโค้ดให้ TextBox รับเฉพาะตัวเลขเท่านั้น]
เริ่มหัวข้อโดย: admin ที่ กันยายน 16, 2018, 03:12:49 PM
TextBox เป็นคอนโทรลที่ให้ผู้ใช้โปรแกรมสามารถป้อนข้อความได้(โดยการพิมพ์) ข้อความที่ทำการพิมพ์เข้าไปโปรแกรมนำไปใช้งานในตัวโปรแกรมตามที่ผู้เขียนออกแบบใช้งาน และในบางครั้งการป้อนเข้าไปต้องการรับเฉพาะตัวเลขเท่านั้นเพื่อนำไปคำนวณต่าง ๆ ตามที่ออกแบบไว้ หากผู้ใช้งานพิมพ์อักขระอื่นที่ไม่ใช่ตัวเลขทำให้การคำนวณผิดพลาดได้ การเรียนรู้ครั้งนี้เป็นวิธีการที่ทำให้ TextBox รับเฉพาะตัวเลขเท่านั้น ขั้นตอนดังนี้

1. วางคอนโทรล TextBox ลงใน Form โปรแกรมดังรูป
(http://www.praphas.com/PhotoForum/interface/HowTo4/1.png)

2. เลือกเหตุการณ์กระตุ้นคอนโทรล TextBox ให้เป็น KeyPress ดำเนินการดังนี้
   - คลิกที่คอนโทรล TextBox
   - คลิกไอคอนสายฟ้าในกล่อง Properties
   - ดับเบิลคลิกที่คำว่า KeyPress
(http://www.praphas.com/PhotoForum/interface/HowTo4/2.png)

3. ใส่โค้ดให้รับเฉพาะตัวเลขในคอนโทรล TextBox ที่เหตุการณ์กระตุ้น KeyPress
(http://www.praphas.com/PhotoForum/interface/HowTo4/3.png)
โค้ดใน TextBox (คัดลอกไปวางได้เลย)

โค๊ด: [Select]
            // Verify that the pressed key isn't CTRL or any non-numeric digit
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // If you want, you can allow decimal (float) numbers
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }

4. รันโปรแกรมแล้วทดลองป้อนข้อมูลลงในกล่อง TextBox ทั้งที่เป็นตัวเลขและอักขระอื่น ๆ สังเกตุผล
(http://www.praphas.com/PhotoForum/interface/HowTo4/4.png)

กรณีที่ให้รับตัวเลขจำนวนเต็มเท่านั้น (ไม่ให้ใส่ทศนิยม)
ตัวอย่างเช่น รับข้อมูลตัวเลขจากการพิมพ์ลงใน TextBox ระหว่าง 1-999
(http://www.praphas.com/PhotoForum/interface/HowTo4/5.png)
โค้ดรับได้เฉพาะตัวเลขเขียนลงใน Event textBox1_KeyPress
โค๊ด: [Select]
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
โค้ดตรวจสอบค่าใน textBox ไม่ให้เกินกำหนดใช้ Event textBox1_TextChanged
โค๊ด: [Select]
            if (textBox1.Text != "" && Int16.Parse(textBox1.Text) > 1000)
            {
                textBox1.Text = textBox1.Text.Substring(0, textBox1.TextLength - 1);
                MessageBox.Show("ใส่ตัวเลขระหว่าง 1-999 เท่านั้น", "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else if (textBox1.Text == "")
                label1.Text = "ใส่ตัวเลขระหว่าง 1-999";
            else
            {
                label1.Text =  textBox1.Text + " x 2 = " + Int16.Parse(textBox1.Text)*2 ;
            }
หัวข้อ: Re: เรียนรู้ครั้งที่ 4 [การเขียนโค้ดให้ TextBox รับเฉพาะตัวเลขเท่านั้น]
เริ่มหัวข้อโดย: admin ที่ กันยายน 16, 2018, 03:34:34 PM
...
หัวข้อ: Re: เรียนรู้ครั้งที่ 4 [การเขียนโค้ดให้ TextBox รับเฉพาะตัวเลขเท่านั้น]
เริ่มหัวข้อโดย: admin ที่ กันยายน 16, 2018, 03:34:44 PM
...