Tải bản đầy đủ (.pdf) (13 trang)

Tuan15 c net validation, multithreading, ontap

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (588.71 KB, 13 trang )

12/12/2018

Lập trình Ứng dụng quản lý
Validation, Multithreading, Ơn tập

Nội dung
 Validation

 Multithreading
 Ôn tập
 Cấu trúc bài thi lý thuyết

1


12/12/2018

Nội dung
 Validation
 Multithreading
 Ôn tập
 Cấu trúc bài thi lý thuyết

Validation
 Dữ liệu nhập cần phải được kiểm soát tính hợp lệ

trước khi lưu xuống database để đảm bảo tính
tồn vẹn dữ liệu.
 Q trình kiểm tra tính hợp lệ của dữ liệu nhập
gọi là validation.
 Tùy thuộc vào kiến trúc của ứng dụng để xây


dựng cơ chế validation phù hợp (nơi thực hiện,
mức độ,…)

2


12/12/2018

Validation Events
 Validation events được thiết kế để cho phép

kiểm tra thông tin ngay khi được nhập, hơn là
chờ đợi để gửi toàn bộ biểu mẫu (form). Điều
này là rất hữu ích vì:
 Người dùng sẽ n tâm gửi biểu mẫu vì khả năng

phát sinh lỗi đã được kiểm sốt.
 Người dùng có thể nhập nhiều mẩu dữ liệu khơng
hợp lệ vào cùng một thời điểm. Nếu không kiểm tra
dữ liệu cho đến khi biểu mẫu được gửi đi, chương
trình sẽ phải tìm ra cách nào đó để thơng báo tất cả
các lỗi cùng một lúc.
 Vào thời điểm người dùng gửi biểu mẫu, họ có thể
đã quên về trường cụ thể mà họ nhập khơng chính
xác.

Validation Event Sequence
 Khi điều hướng từ control này sang control khác,

một chuỗi event sẽ xảy ra. Ví dụ chuyển từ TextBox1

sang TextBox2 bằng cách nhấn tab thì các event
xảy ra như sau





Leave (TextBox1)
Enter (TextBox2)
LostFocus (TextBox1)
GotFocus (TextBox2)

 Thực hiện validation với event LostFocus ?
 Khi điều hướng bằng mouse:





LostFocus (TextBox1)
Leave (TextBox1)
Enter (TextBox2)
GotFocus (TextBox2)

3


12/12/2018

Validating events

 Trong .NET, event xảy ra khi điều hướng từ

TextBox1 sang TextBox2
 Leave (TextBox1)
 Enter (TextBox2)
 Validating (TextBox1)
 Validating (TextBox2)
 LostFocus (TextBox1)
 GotFocus (TextBox2)

 Validated event cho phép phản hồi dữ liệu đã

nhập chính xác.
 Validating event cho phép thực hiện xác minh
dữ liệu và kiểm soát chuyển focus control.

CausesValidation property
 Validation chỉ diễn ra khi source control có thiết

lập property CausesValidation thành true. Ngồi
ra, Validation sẽ khơng xảy ra cho đến khi sự
thay đổi focus vào một control cũng có property
CausesValidation được đặt thành true. Nếu một
trong hai có một CausesValidation của false,
các event validation bị tạm dừng, nhưng các
event khác (như Enter và Leave) vẫn xảy ra.
Bảng sau cho thấy một số ví dụ về những gì có
thể xảy ra khi điều hướng từ control này sang
control khác.


4


12/12/2018

.NET Validation
Source Control

Destination Control

Result

CousesValidation = false

Không xảy ra

Validation code bị bỏ qua

CousesValidation = true

CousesValidation = true

Validation được thực hiện
cho source control

CousesValidation = true

CousesValidation = false

Validation bị hoãn lại cho

đến khi sự thay đổi focus
vào một
CausesValidation. Vào
thời điểm này, tất cả các
control cần phải được
valid theo thứ tự cho đến
khi một control được tìm
thấy với dữ liệu nhập
khơng hợp lệ và q trình
bị hủy bỏ.

Ví dụ
private void TxtFN_Validating(object sender, CancelEventArgs e)
{
if (((TextBox)sender).Text.Length == 0)
{
MessageBox.Show("You must enter a first and last name.",
"Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
e.Cancel = true;
}
}

5


12/12/2018

Vấn đề đóng form
private void BtnCancel_Click(object sender, EventArgs e)
{

AutoValidate = AutoValidate.Disable;
Close();
}

Giải quyết vấn đề
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
// If e.Cancel is true, the cancel flag has been set by a validation routine.
if (e.Cancel)
{
DialogResult result = MessageBox.Show("Do you wish to close the form?",
"Errors found", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
e.Cancel = false;
}
}
}

6


12/12/2018

ErrorProvider
 Sử dụng MessageBox (Dialog) để thông báo lỗi

đến người dùng là giải pháp không tốt, làm giảm
chất lượng trải nghiệm ứng dụng.
 Cần có hướng tiếp cận thơng báo lỗi đến người

dùng thân thiện hơn, mục tiêu vừa không làm
gián đoạn trải nghiệm người dùng, vừa đưa được
thông tin lỗi sớm và chính xác nhất (vị trí và loại
lỗi).
 .NET cung cấp control ErrorProvider để giúp hiển
thị thông tin lỗi uyển chuyển hơn.

Sử dụng ErrorProvider
private void TxtFN_Validating(object sender, CancelEventArgs e)
{
Control ctrl = (Control)sender;
if (ctrl.Text.Length == 0)
{
errorProviderMain.SetError(ctrl, "You must enter a first and last name.");
e.Cancel = true;
}
else
{
errorProviderMain.SetError(ctrl, "");
}
}

7


12/12/2018

Kiểm tra lỗi
private void BtnOK_Click(object sender, EventArgs e)
{

if (errorProviderMain.GetError(txtFN).Length == 0 &&
errorProviderMain.GetError(txtLN).Length == 0)
{
Close();
}
else
{
MessageBox.Show("You still have invalid input.",
"Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}

MaskedTextBox
 Properties
 Mask
 PromptChar
 TextMaskFormat
…

 Events
 TypeValidationCompleted
 MaskInputRejected
…

8


12/12/2018

Nội dung

 Validation

 Multithreading
 Ôn tập
 Cấu trúc bài thi lý thuyết

Mục tiêu của MultiThreading
 Giúp cho client đáp ứng tốt hơn (more

responsive).
 Hoàn thành nhiều tác vụ cùng lúc.
 Giúp cho một ứng dụng máy chủ có khả năng mở
rộng.

9


12/12/2018

Ví dụ
 Ứng dụng với tác vụ tốn thời gian hoàn thành

Áp dụng Multithreading

10


12/12/2018

Nội dung

 Validation
 Multithreading

 Ôn tập
 Cấu trúc bài thi lý thuyết

Cơ bản
 Kiến thức về .NET (chú trọng ngôn ngữ C#) về

các vấn đề
 Định nghĩa biến, kiểu dữ liệu
 Khai báo, định nghĩa struct, class
 Phương thức và các kiểu truyền tham số
 Xử lý chuỗi, định dạng xuất,…

 Lập trình WinForm
 Khái niệm, khai báo và sử dụng events
 Xây dựng giao diện cơ bản và xử lý

11


12/12/2018

Xử lý dữ liệu
 Truy vấn LINQ cơ bản
 Các phương thức hỗ trợ trong Enumerable
 Query syntax và Lambda syntax trên objects.

 Sử dụng LINQ to SQL

 Truy vấn theo yêu cầu
 Tương tác với database (thêm, xóa, sửa)
 Các dữ liệu quan hệ

Nội dung
 Validation

 Multithreading
 Ôn tập

 Cấu trúc bài thi lý thuyết

12


12/12/2018

Thi lý thuyết
 Thời gian làm bài: 90 phút
 Không sử dụng tài liệu
 Có khoảng 5 câu hỏi cho các lĩnh vực ôn tập.
 Phần viết code không quan trọng chính xác hồn

tồn từ khóa mà chỉ cần rõ ý mỗi dịng code mục
đích thực hiện điều gì.

13




×