Mọi người cho em hỏi em có 1 cái textbox bây giờ em chỉ muốn cho nhập số tự nhiên >=2 thì phải làm sao, nếu chỉ nhập số <=2 thì ngay lập tức sẽ có messagebox báo lỗĩ. còn nhập đúng thì sẽ làm tiếp, ở đây ý em là không cần qua 1 hàm sử lý lỗi nhập nào hết, cứ sau dấu nháy trong textbox để ta bắt đầu nhập giá trị mà ta nhập vào số<=2 thì nó báo lỗi ngay.
Announcement
Collapse
No announcement yet.
Hỏi cách bắt sự kiện kiểm tra giá trị trong textbox.
Collapse
X
-
làm sao bạn ?
mình làm như sau, nhưng nó vẫn làm tiếp việc đằng sau khi nào đụng đến giá trị nó mới báo.
Code:int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox if (n <= 1) { MessageBox.Show("Loi ! Hay nhap lai gia tri!"); }
htc - Hi Tech
Comment
-
Originally posted by htc View Postlàm sao bạn ?
mình làm như sau, nhưng nó vẫn làm tiếp việc đằng sau khi nào đụng đến giá trị nó mới báo.
Code:int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox if (n <= 1) { MessageBox.Show("Loi ! Hay nhap lai gia tri!"); }
-----------------------------
Mai Văn Khải
Software Engineering, University Information of Technology
a07d26eb5cbc98f77b36a461eb629456
Comment
-
Bạn có thể chọn lưu giá trị hiện tại trong một biến textbox_old nào đó để restore mỗi khi nhập giá trị bất hợp lệ hoặc reset về một giá trị mặc định nào đó.
Code:int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox if (n <= 1) { MessageBox.Show("Loi ! Hay nhap lai gia tri!"); textbox.Text = textbox_old; //textbox.Text = "1"; } else textbox_old = textbox.Text;
Comment
-
Originally posted by 10520094 View Postkeydowm hoặc textchange đều đc đó bạn
Originally posted by 09520243 View PostBạn có thể chọn lưu giá trị hiện tại trong một biến textbox_old nào đó để restore mỗi khi nhập giá trị bất hợp lệ hoặc reset về một giá trị mặc định nào đó.
Code:int n = Int32.Parse(textbox.Text);//lay gia tri cua textbox if (n <= 1) { MessageBox.Show("Loi ! Hay nhap lai gia tri!"); textbox.Text = textbox_old; //textbox.Text = "1"; } else textbox_old = textbox.Text;
Originally posted by 09520133 View PostThế thôi. nhưng tốt nhất là đặt đoạn code trên trong sự kiện click vào nút Ok hay nút gì đó sau khi nhập xong!htc - Hi Tech
Comment
-
Originally posted by htc View Post2 cái này xài sao bạn ? mình thử e.keydown, hay e.textchange mà không thấy gì hết, mong các pro giúp đỡ.
cách này cũng hay nhưng nhưng chị tạm mà thôi, tự dưng tòi ra cái textbox nữa để ko, mà lại ko ngắn gọn cái winform
mình thì lại muốn nó trực tiếp kiểm tra chứ không qua nút Ok nào cả nếu nút Ok chúng ta viết luôn cái hàm xét cho nút đó cũng dk.-----------------------------
Mai Văn Khải
Software Engineering, University Information of Technology
a07d26eb5cbc98f77b36a461eb629456
Comment
-
Originally posted by htc View Postcách này cũng hay nhưng nhưng chị tạm mà thôi, tự dưng tòi ra cái textbox nữa để ko, mà lại ko ngắn gọn cái winform
Comment
-
tất cả những gì anh cần là đây.
có gì sai sót nhớ nhắc em nha, em đang coi WPF nên không rành Window form lém.
anh chọn sự kiện keypress.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c = e.KeyChar;
if (char.IsDigit(c) == true) //day la 1 extension method kiem tra xem e co phai la 1 numb hay khong
{
int i = Convert.ToInt32(c.ToString());// chac an hon la Conver.Toint32(c)
if (i < 2)
e.Handled = true; //lệnh này xóa kí tự vừa nhập. nếu anh muốn hiển thị 1 messageBox thì viết luôn ở đây.
}
else
e.Handled = true;
}
Comment
-
-----------------------------
Mai Văn Khải
Software Engineering, University Information of Technology
a07d26eb5cbc98f77b36a461eb629456
Comment
-
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c = e.KeyChar; //nhan ki tu vua nhap
if (char.IsDigit(c) == true) // neu ki tu vua nhap la 1 so
{
int i = Convert.ToInt32(c.ToString()); // chuyen 1 ki tu sang so nguyen
if (i < 3)
{
e.Handled = true; //xoa ki tu sai.
MessageBox.Show("loi nhap sai");
}
}
else
{
e.Handled = true; //xoa ki tu sai.
MessageBox.Show("loi nhap sai");
}
}
đúng yêu cầu.
Comment
-
Originally posted by 11520327 View Postbài anh Khải chưa "mềm dẻo" ở chỗ này:
1. nếu nhập 1 kí tự khác số sẽ phát sinh 1 ngoại lệ. nên dùng try catch.
2. nếu nhập 1 số mà nó không đúng( <2) thì số đó vẫn nằm trong textBox, không được tự động xóa đi.
Originally posted by 09520133 View Post...đại khái là thế!
P/s: Hạn chế dùng Try - catch-----------------------------
Mai Văn Khải
Software Engineering, University Information of Technology
a07d26eb5cbc98f77b36a461eb629456
Comment
-
Code:private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { char c = e.KeyChar; //nhan ki tu vua nhap if (char.IsDigit(c) == true) // neu ki tu vua nhap la 1 so { int i = Convert.ToInt32(c.ToString()); // chuyen 1 ki tu sang so nguyen if (i < 3) { e.Handled = true; //xoa ki tu sai. MessageBox.Show("loi nhap sai"); } } else { e.Handled = true; //xoa ki tu sai. MessageBox.Show("loi nhap sai"); } }
code của em nếu làm thêm chút thì sẽ khắc phục đc việc nhập chữ (Tức là chỉ cho nhập số)
còn trong trường hợp này thì như anh nói phía trên
Originally posted by 09520133 View Post... giả xử cậu kiểm tra trong sự kiện Textchange, gõ vào số 123, vừa gõ số 1 cái nó xuất ra cái hộp thông báo không hợp lệ. tức không? ...Last edited by 09520133; 25-09-2012, 00:15.-----------------------------
Mai Văn Khải
Software Engineering, University Information of Technology
a07d26eb5cbc98f77b36a461eb629456
Comment
Comment