Archive

Archive for September, 2008

The MessageBox Class

September 30, 2008 1 comment

เนื่องจาก คราวที่แล้วได้ทิ้งไว้ว่า ในการทำ validation นั้นจะต้องมีการแสดง Message หรือ ข้อความแจ้งต่อผู้ใช้งานถึงข้อผิดพลาด และให้ใส่ข้อมูลให้ถูกต้อง การแสดง Message เหล่านี้มีการแสดง ได้หลายวิธีคือ การใช้ MessageBox Class  การใช้ ErrorProvider หรือ การใช้ StatusStrip (status bar) ในบทความนี้เราจะพูดถึงการใช้ MessageBox Class

เรื่องของ MessageBox Class นั้น การใช้งาน ใช้แสดงข้อความโต้ตอบกับผู้ใช้ งานเป็น Windows Message พร้อมทั้งแสดง icon และ ปุ่มที่เราสามารถที่จะกำหนด ได้ตามความต้องการ ในการแสดง MessageBox นั้นเราจะเรียก method ชื่อว่า show()

Show() method นั้นเป็น static method โดยจะรับ arguments 4 ตัวด้วยกันคือ message, title name, buttons, icons การใช้งานก็เป็น ดังตัวอย่าง code นี้นะครับ

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(“The entered data is not valid. Please enter valid data”,
“Data Entry Error”, MessageBoxButton.OK, MessageBoxIcon.Error);
}

จาก code ดังกล่าว จะแสดง MessageBox ดังนี้นะครับ

จาก code ด้านบนเราจะเห็นว่า parameter แรก คือ “The entered data is not valid. Please enter valid data” นั้นแสดงเป็น message ใน MessageBox  parameter ตัวที่สอง คือ “Data Entry Error” ก็คือ ส่วนที่เป็น Title ของ MessageBox  parameter ตัวที่สาม คือ MessageBoxButton.OK เป็น enum type นะครับ ใช้สำหรับ กำหนดจำนวน และชนิดของปุ่มที่จะใช้แสดง  parameter ตัวสุดท้าย MessageBoxIcon.Error ใช้กำหนด รูป Icon ที่แสดง คู่กับ Message ที่เรากำหนด  ถึงตรงนี้คงพอจะเข้าใจแล้วนะครับ ว่าจะใช้งานมันได้อย่างไร

ส่วนตารางด้านล่างเป็น รายละเอียด ของ MessageBoxButton และ MessageBoxIcon Enumeration

Option Description
AbortRetryIgnore แสดง ปุ่ม Abort, Retry, and Ignore
OK แสดง ปุ่ม Ok (default)
OKCancel แสดง ปุ่ม Ok , Cancel
RetryCancel แสดงปุ่ม Retry, Cancel
YesNoCancel แสดงปุ่ม Yes No Cancel
YesNo แสดงปุ่ม Yes, No

Option Description
Asterisk
Error
Exclamation
Hand
Information
None
Question
Stop
Warning

ครับ จากข้อมูลที่ ได้กล่าวมานั้นคงจะได้ แนวคิดในการ ใช้งานแล้วนะครับ

มาดูอีกตัวอย่างการใช้งานนะครับ เนื่องจาก MessageBox ไม่ได้ใช้ในการแสดง ข้อความอย่างเดียวนะครับ มันสามารถที่จะตอบรับ การตัดสินใจของ ผู้ใช้งานได้ด้วย นั่นก็คือ DialogResult นั่นเ้องครับ   DialogResult เป็น enumeration ที่มีค่าต่าง ๆ ที่ Dialog จะ return หลังจากที่ ผู้ใช้งาน click ปุ่มใด ปุ่มหนึ่ง  OK หรือ Cancel ดูจากตัวอย่างก็แล้วกันนะครับ

DialogResult res =  MessageBox.Show(“Confirm Delete data.”,
“Deletion confirm”, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (res == DialogResult.OK)
{
// Perform some task
}

จาก code จะเห็น ว่า MessageBox.Show()  จะ return ค่าใดค่าหนึ่งออกมาขึ้นอยู่ว่าผู้ใช้จะคลิกปุ่มใด  เราใช้ ตัวแปร  DialogResult รับค่าแล้วนำไป ตรวจสอบใน if( res == DialogResult.OK ) ว่าผู้ใช้ click ปุ่ม Ok หรือไม่ ถ้าใช้ ก็ทำงานใดงานหนึ่ง ที่เราต้องการ หรือ ถ้าผู้ใช้ click  Cancel ก็ผ่านไปเลย ไม่ต้องสนใจ อย่างนี้เป็นตันนะครับ สำหรับ เรื่องของการใช้ MessageBox ก็มีอันจบลง แค่นี้นะครับ

Categories: C# .NET, Windows Forms

การทำ Validation

ใน Application การป้อนข้อมูลของผู้ใช้ ควรจะต้อง ถูกต้องและได้ตามรูปแบบที่ต้องการ มิฉะนั้น คงจะต้องเสียเวลากับการแก้ไขอีกภายหลัง  ดังนั้นข้อมูลควรจะต้อง ถูกทำการ ตรวจสอบให้เป็นไปตามรูปแบบ หรือ ข้อกำหนด ที่วางไว้ ในขณะที่ผู้ใช้ ทำการป้อนข้อมูล

ซึงในส่วนนี้เราจะพูดถึงการ ทำการ validation การทำ validation คือการตรวจสอบ ความ ถูกต้องของข้อมูล และการแก้ไขข้อมูลให้ถูกต้อง ข้อมูลในที่นี้คือข้อมูลที่ผู้ใช้ ทำการป้อนให้กับ Application    การทำ Validation สามารถ ตรวจสอบข้อมูลได้หลายลักษณะ เช่น การตรวจสอบรูปแบบ (format) ข้อมูล  การตรวจสอบ ข้อมูลตัวเลข ให้อยู่ในขอบเขตที่ต้องการ และการตรวจสอบความยาวของข้อมูล

ดังนั้น ด้วยการทำ Validation นี้จะทำให้สามารถ แจ้งและจัดการให้ผู้ใช้ ป้อนข้อมูลที่ถูกต้อง เพื่อลด Error ที่จะเิกิดขึ้นภายหลัง

การทำ Validation  User Input

ในการทำ Validate ข้อมูลใน control เราจะทำใน Validating event ของ Control นั้น ๆ     Validating Event จะทำให้ผู้ใช้งาน ไม่สามารถ เลื่อนผ่าน หรือ เปลี่ยน Focus ไปยัง control ถัดไปได้ จนกว่าข้อมูลที่ป้อนนั้นจะเป็นไปตาม ข้อกำหนดที่วางไว้  เช่น Data Entry Form ด้านล่าง ผู้ใช้จะไม่สามารถย้ายจาก Control หนึ่ง ไปอีก Control หนึ่งได้ หาก หรือ จนกว่า ข้อมูลที่ป้อนเป็นไปตามกฏที่วาง ไว้

หาก กำหนดว่า ในช่อง TextBox  Name จะต้องมีข้อมูล อย่างน้อย 1 ตัวอักษร ไม่สามารถปล่อยว่างได้  ในช่อง Age จะต้องกรอกข้อมูล เป็นตัวเลข มากกว่า 35 และสุดท้าย Date of joining จะต้องไม่เกินวันที่ปัจจุบัน  เราสามารถจะทำได้โดย ป้อน Code ลงใน Validating ของ TextBox ดังนี้

// TextBox for Name
private void textBox1_Validating(Object sender, CancelEventArgs e)
{
if(textBox1.Text.Length == 0)
// Prompt the user to enter his name
}
// TextBox for Age
private void textBox2_Validating(Object sender, CancelEventArgs e)
{
if(Convert.ToInt32(textBox2.Text) < 35) // Prompt the user to enter age greater than 35 } // TextBox for Date of join private void textBox3_Validating(Object sender, CancelEventArgs e) { if(Convert.ToDateTime(textBox3.Text) > DateTime.Now)
// Prompt the user to enter date prior to the current date
}

สังเกตุว่า Validating event ต้องการ Argument สองตัวคือ

  • sender อ้างอิง object ที่เป็นเจ้าของ event
  • e ใช้สำหรับการ cancel  validating event

สำหรับ e นั้น จะทำให้ ผู้ใช้ ตรึง focus ไว้ที่ control เดิมตราบเท่า ที่ข้อมูลที่ป้อนจะเป็นไปตาม ข้อกำหนด หรือเป็นไปตามเงื่อนไข การใช้งาน e ตามตัวอย่าง

// TextBox for Name
private void textBox1_Validating(Object sender, CancelEventArgs e)
{
if(textBox1.Text.Length == 0)
{
// Prompt the user to enter his name
MessageBox.Show(“Enter name”, “Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);
e.Cancel = true;
}
}

สำหรับการทำ validate โดย concept ก็เป็น ไปตามที่ได้ อธิบาย ไปแล้ว สำหรับการแสดง ข้อความหรือ Message เพื่อแจ้งหรือโต้ตอบ
กับผู้ใช้นั้น จะกล่าวต่อไป ซึ่งโดยมากที่ใช้งานกันก็คือ MessageBox ErrorProvider control และ StatusStrip control
โปรดติดตามต่อไป สำหรับผู้ที่ติดตามอ่าน Blog นี้นะครับ ผมอ้างอิงกับ Visual Studio 2005 นะครับ