C# winapp Keyboard คีย์ได้เฉพาะภาษาอังกฤษเท่านั้น หรือใครพอมี ตย โค้ดขอแชร์หน่อย
Code (C#)
switch (e.KeyChar)
หรือ
Code (C#)
switch (e.KeyChar.ToString())
ลองดูแบบนี้ครับ
Date :
2012-03-16 20:31:51
By :
webmaster
เหมือนเดิมครับพี่
ลองเขียน แบบมี String ไว้ด้านหน้า แล้วพิมพ์ . ดูมันไม่มีรู้จัก ASC ตามรูปครับ
Date :
2012-03-17 09:36:17
By :
SeedNew
ลองนี้นะครับ
Code (C#)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
//switch (Strings.Asc(e.KeyChar))
switch (e.KeyChar)
{
case (char)48: // TODO: to 122
e.Handled = false;
break;
case (char)8:
case (char)13:
case (char)46:
// Backspace = 8, Enter = 13, Delete = 46
e.Handled = false;
break;
default:
e.Handled = true;
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ");
break;
}
}
หรือว่าจะ
Code (C#)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
//switch (Strings.Asc(e.KeyChar))
switch ((int)e.KeyChar)
{
case 48: // TODO: to 122
e.Handled = false;
break;
case 8:
case 13:
case 46:
// Backspace = 8, Enter = 13, Delete = 46
e.Handled = false;
break;
default:
e.Handled = true;
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ");
break;
}
}
ฝากกด like หน่อยนะครับ
http://www.facebook.com/pages/PStudio-Development-Store/284410714927365
ประวัติการแก้ไข 2012-03-17 20:27:33
Date :
2012-03-17 20:27:11
By :
pStudio
Code (C#)
case "48":
กรณีเป็น string จะต้องใส่ " " ด้วยครับ ในภาษา C# ให้ความสำคัญเรื่อง DataType มากครับ เป็นภาษาที่โครงสร้างค่อนข้างแข็งแรง ลดข้อผิดพลาดระหว่าง Runtime ได้เยอะเลย
Date :
2012-03-17 20:38:04
By :
webmaster
จากตัวอย่าง พี่ Mr .Win กับ ตัวอย่าง 2 ตัวอย่างพี่ pStudio
ผมลองทั้ง 3 ตัวไม่ผ่านซักตัวเลย
มันรันผ่านทุกตัวนะ แต่มันไม่อ่าน case โดดไปอ่าน default: ทุกตัวเลย
พอคีย์อะไป ไม่ว่าจะเป็นตัวเลข ภาษาไทย ภาษาอังกฤษ
จะมี MessageBox ขึ้นโชว์เหมือนในรูปข้างล่าง
Code (C#)
private void textBoxMemberEng_KeyPress(object sender, KeyPressEventArgs e)
{
//switch (e.KeyChar.ToString())
//{
// case "48": // TODO: to 122
// // โค๊ดภาษาอังกฤษ์ตามจริงจะอยู่ที่ 58ถึง122 แต่ที่เอา 48มาเพราะเราต้องการตัวเลข
// e.Handled = false;
// break;
// case "8":
// case "13":
// case "46":
// // Backspace = 8, Enter = 13, Delete = 46
// e.Handled = false;
// break;
// default:
// e.Handled = true;
// MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ");
// break;
//}
//switch (e.KeyChar)
//{
// case (char)48: // TODO: to 122
// e.Handled = false;
// break;
// case (char)8:
// case (char)13:
// case (char)46:
// // Backspace = 8, Enter = 13, Delete = 46
// e.Handled = false;
// break;
// default:
// e.Handled = true;
// MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ");
// break;
//}
switch ((int)e.KeyChar)
{
case 48: // TODO: to 122
e.Handled = false;
break;
case 8:
case 13:
case 46: // Backspace = 8, Enter = 13, Delete = 46
e.Handled = false;
break;
default:
e.Handled = true;
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ");
break;
}
}
ประวัติการแก้ไข 2012-03-19 11:54:06 2012-03-19 12:24:41 2012-03-19 12:32:17
Date :
2012-03-19 11:50:27
By :
SeedNew
ลองดูอันนี้นะครับ
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
//Support for number and alphabet
if (((int)e.KeyChar >= 48 && (int)e.KeyChar <= 122) || (int)e.KeyChar == 8 || (int)e.KeyChar == 13 || (int)e.KeyChar == 46)
{
e.Handled = false; // OS will handle this event.
}
else
{
e.Handled = true; // OS will not handle this event.
}
}
}
}
ประวัติการแก้ไข 2012-03-19 23:41:27 2012-03-19 23:44:01
Date :
2012-03-19 23:40:48
By :
pStudio
ได้แล้วครับ ขอบคุณพี่ pStudio กับ พี่ Mr .Win มากๆนะครับ
Date :
2012-03-20 09:27:55
By :
SeedNew
เยี่ยมครับ กระทู้นี้มีประโยชน์แน่นอน
Date :
2012-03-20 10:06:12
By :
webmaster
ขอแชร์ต่อแล้วกันนะครับ มึนมาหลายวัน ตอนนี้ จำตัวเลข ได้เลย
คีย์ได้เฉพาะตัวเลข
Code (C#)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57) || (int)e.KeyChar == 8 || (int)e.KeyChar == 13 || (int)e.KeyChar == 46)
{
e.Handled = false; // OS will handle this event.
}
else
{
e.Handled = true; // OS will not handle this event.
MessageBox.Show("สามารถกดได้แค่ตัวเลข !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox1.Focus();
textBox1.SelectAll();
}
}
คีย์ได้เฉพาะตัวเลข . - , Code (C#)
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (((int)e.KeyChar >= 44 && (int)e.KeyChar <= 57) || (int)e.KeyChar == 8 || (int)e.KeyChar == 13 )
{ {
e.Handled = false; // OS will handle this event.
}
else
{
e.Handled = true; // OS will not handle this event.
MessageBox.Show("สามารถกดได้แค่ตัวเลข !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox2.Focus();
textBox2.SelectAll();
}
}
โค๊ดดักภาษาอังกฤษ
Code (C#)
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
if (((int)e.KeyChar >= 48 && (int)e.KeyChar <= 122) || (int)e.KeyChar == 8 || (int)e.KeyChar == 13 || (int)e.KeyChar == 46 || (int)e.KeyChar == 32)
{
e.Handled = false; // OS will handle this event.
}
else
{
e.Handled = true; // OS will not handle this event.
MessageBox.Show("กรุณากรอกข้อมูลเป็นภาษาอังกฤษ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox3.Focus();
textBox3.SelectAll();
}
}
โค้ดดักภาษาไทย
Code (C#)
private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
{
if ((int)e.KeyChar >= 161 || (int)e.KeyChar == 8 || (int)e.KeyChar == 13 || (int)e.KeyChar == 46 || (int)e.KeyChar == 32)
{
e.Handled = false; // OS will handle this event.
}
else
{
e.Handled = true; // OS will not handle this event.
MessageBox.Show("กรุณากรอกข้อมูลภาษาไทยเท่านั้น !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox4.Focus();
textBox4.SelectAll();
}
}
ขอขอบคุณกับกระทู้ https://www.thaicreate.com/dotnet/forum/071008.html ที่แชร์ความรู้กับสิ่งดีๆ
ประวัติการแก้ไข 2012-03-20 10:10:45 2012-03-20 10:37:16 2012-03-20 11:32:30
Date :
2012-03-20 10:09:13
By :
SeedNew
Load balance : Server 00