This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Validator Textbox C#

Hi anh em mình có vấn đề mong anh em trợ giúp. nếu mình kéo 3 cái textbox ở toolbox vào form thì mình bắt lỗi validator đc. nhưng ở đây mình tạo mới 3 cái textbox là username, password và mail nên mình không biết validator chỗ nào mong anh em chỉ giáo. cảm ơn anh em nhiều:
// Creating and setting the properties of TextBox1
TextBox textboxUsername = new TextBox();
textboxUsername.Location = new Point(420, 50);
textboxUsername.Size = new Size (300,30);
textboxUsername.Name = "text_user";
this.Controls.Add(textboxUsername);

TextBox textboxPassword = new TextBox();
textboxPassword.Location = new Point(420, 80);
textboxPassword.Size = new Size(300, 30);
textboxPassword.Name = "text_user";
this.Controls.Add(textboxPassword);

TextBox textboxMail = new TextBox();
textboxMail.Location = new Point(420, 110);
textboxMail.Size = new Size(300, 30);
textboxMail.Name = "text_user";
this.Controls.Add(textboxMail);
 

HLongIT

Rìu Bạc
Bạn đã thử search gg chưa, mình vừa search thì ra khá nhiều. Bạn đã xem thử khi validate bằng cách kéo thả, code phát sinh như thế nào, ra event gì, từ đó copy qua thôi. Mà dùng winform ưu điểm là kéo thả, tiết kiệm thời gian, đằng này lại thích code, khổ cực vậy fen
 
bắt buộc dùng code để sài riêng bạn ơi vậy mới khoai. còn kéo thả thì mình làm đc
 

HLongIT

Rìu Bạc
bắt buộc dùng code để sài riêng bạn ơi vậy mới khoai. còn kéo thả thì mình làm đc
// Creating and setting the properties of TextBox1 TextBox textboxUsername = new TextBox(); textboxUsername.Location = new Point(420, 50); textboxUsername.Size = new Size(300, 30); textboxUsername.Name = "text_user"; this.Controls.Add(textboxUsername); textboxUsername.Validating += new CancelEventHandler(textboxUsername_Validating);

Phát sinh hàm validate tại đây, muốn validate gì thì code trong đó
void textboxUsername_Validating(object sender, CancelEventArgs e) { throw new NotImplementedException(); }
 


bạn ơi hàm trên minh khai báo cái textbox có tên clt sao hàm validating bên dưới gọi nó để bắt lỗi mà gọi không đc
 
vs từ 2008 nó tác 2 file riêng là design và file code mà. chọn event chi cần F4 chọn event của textbox rồi viết trong sự kiện là được
kéo textbox từ tookbox ra gán cái đc luôn. nhưng
//Creating TextBox1
TextBox Mytextbox = new TextBox();
xong ra khỏi hàm này thì gọi Mytextbox không đc
 
Cái clgt bạn khoanh đỏ kia qua hàm validating thì nó là cái sender ấy. Ép nó về TextBox và sài thôi
bạn sửa hộ mình với
private void CalTextBox()
{
ClassTextBox clt = new ClassTextBox("txtInput", "", 340, 85, new EventHandler(textbox_Leave));//name,text va vi tri
clt.Validating += new CancelEventHandler(txtInput_Validating);
Controls.Add(clt);
}

private void txtInput_Validating(object sender, CancelEventArgs e)
{
if (vaildate_password.IsMatch(clt) != true)
{
MessageBox.Show("Password must be atleast 8 to 15 characters. It contains atleast one Upper case and numbers.", "Invalid", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return;
}
else
{
MessageBox.Show("Password is correct.");
}
}
 
Validte từng Textbox thì đc nhưng giờ create mới Button và Textbox rồi làm sự kiện CLick thì ép kiểu để bắt lỗi cái textbox này không đc:
private void btnSave_Click(object sender, EventArgs e)
{
try
{
ClassTextBox txtUserName = (ClassTextBox)sender;//Lỗi ở đây ko ép kiểu đc
txtUserName.Name = "txttxtUserName";
if (txtUserName.Text == "Nhập BP Code" || txtUserName.Text == "")
{
MessageBox.Show("Bạn phải nhập BP Code", "Hướng dẫn ! ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

return;

}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

}
 

HLongIT

Rìu Bạc
tạo mới đối tượng rồi gọi sự kiện của đối tượng đó, ép kiểu hay không là trong hàm sự kiện. Tại sao bạn ép sender tượng sender kia là Textbox ? nhỡ không phải thì sao, bạn thử debug xem sender là gì ?
 
Uhm đúng rồi bạn mình tạo 2 đối tượng 1 là button 2 là textbox giờ cái sự kiện click của button làm sao mà nó nhận biết đc cái textbox kia chưa nhập dữ liệu để bắt lỗi
 
trong sự kiện click button gọi sự kiện validate textbox ra
private void txtUserName_Validating(object sender, CancelEventArgs e)
{
ClassTextBox txtUserName = (ClassTextBox)sender;
if (txtUserName.Text == "Nhập User Name" || txtUserName.Text == "")
{
MessageBox.Show("Bạn phải nhập User Name", "Hướng dẫn ! ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtUserName.Focus();
return;

}
}
Không gọi đc bạn ơi vì đằng sau nó có: (object sender, CancelEventArgs e) có phải function đâu mà gọi
 
Bắt lỗi ở Validating xong code button Save để bắt lỗi, up lên đây ai cần thì lấy
private void btnSave_Click(object sender, EventArgs e)
{
if(this.ValidateChildren())
{
//Here the form is in valid state
//Do what you need when the form is valid
}
else
{
var listOfErrors = this.errorProvider1.ContainerControl.Controls.Cast<Control>()
.Select(c => this.errorProvider1.GetError(c))
.Where(s => !string.IsNullOrEmpty(s))
.ToList();
MessageBox.Show("Please correct validation errors:\n - " +
string.Join("\n - ", listOfErrors.ToArray()),
"Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

kéo thêm cái errorProvider ở toolbox vào form là OK