-----
2.21
Timer
Control Timer có một
method quan trọng là Tick(), method này sẽ được thực thi sau mỗi khoảng thời
gian được thiết lập trong thuộc tính Interval.
Để khởi chạy Timer,
gọi hàm Start(). Để dừng Timer, gọi hàm Stop().
Đoạn mã minh họa,
chương trình đếm số,
int i = 0;
private void timer1_Tick(object sender,
EventArgs e)
{
label1.Text = i.ToString();
i++;
}
private void button1_Click(object
sender, EventArgs e)
{
if (!timer1.Enabled)
{
timer1.Start();
button1.Text =
"Dừng";
}
else
{
timer1.Stop();
button1.Text = "Bắt
đầu";
}
}
[Giao diện chương
trình]
2.22
ProgressBar
Một số thuộc tính
quan trọng:
– Minimum và
Maximum: là miền giá trị của thanh trượt, hay kích thước của thanh trượt
– Step: là giá trị
của mỗi bước nhảy, hay kích thước của bước nhảy
– PerformStep(): thực
hiện bước nhảy trên thanh trượt
– Style: kiểu trượt
Ví dụ, tạo một
progressbar chạy theo timer,
[Đoạn mã tham khảo]
private void button1_Click(object sender,
EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender,
EventArgs e)
{
progressBar1.PerformStep();
}
[Giao diện]
2.23
NumericUpDown
Control NumericUpDown công cụ được sử dụng để tạo một ô nhập
liệu, cho phép điều chỉnh giá trị số tăng hoặc giảm.
Một số thuộc tính quan trọng của NumericUpDown:
– Minimum: giá trị nhỏ nhất
– Maximum: giá trị lớn nhất
– Increment: giá trị mỗi lần tăng hoặc giảm
</////
hết buổi 12
2.24
Process
Cần khai báo using
System.Diagnostics; để sử dụng.
Ví dụ,
void LayCacProcess()
{
Process [] processArr =
Process.GetProcesses();
foreach(Process item in processArr)
{
textBox1.Text =
item.ProcessName + "\n" + textBox1.Text;
}
}
Để chạy một chương
trình khác sử dụng hàm Start, ví dụ,
Process.Start("regedit");
Hoặc
Process.Start("notepad.exe");
Đoạn mã sau khởi chạy
một chương trình ở dạng ẩn,
Process p = new
Process();
p.StartInfo.FileName =
"notepad.exe";
p.StartInfo.WindowStyle =
ProcessWindowStyle.Hidden;
p.Start();
2.25
DateTimePicker
Công cụ dùng để lấy giờ.
Có thể định dạng kiểu
hiển thị của ngày, giờ trong thuộc tính Format hoặc CustomFormat (với điều kiệu
thuộc tính Format được thiết lập là Custom).
Để tùy chỉnh cách
hiển thị của datatimepicker, thiết lập trong thuộc tính ShowUpDown = true.
Để gán dữ liệu cho
datetimepicker,
dateTimePicker1.Value =
new DateTime(2018,11,29);
Để lấy dữ liệu từ
datatimepicker,
DateTime date =
dateTimePicker1.Value;
2.26
LinQ
LinQ (viết tắt của Language Integrated
Query) là một thư viện được tích hợp trong Framework .NET 3.5. Hiểu nôm na,
LinQ là tích hợp SQL vào C#, giúp truy vấn dữ liệu ngay trong C#.
Với các kiểu dữ liệu
mảng hoặc danh sách, khi muốn lọc một số dữ liệu từ trong mảng/danh sách thường
phải sử dụng các vòng lặp, so sánh với điều kiện cho trước, nếu thỏa điều kiện
thì lấy ra và lưu vào mảng/danh sách mới. Cách làm này phức tạp, tốn thời gian,
thay vì vậy có thể sử dụng LinQ.
LinQ đang hỗ trợ các
công nghệ sau:
– SQL Server
databases: LinQ to SQL
– XML documents:
LinQ to XML
– ADO.NET datasets:
LinQ to DataSet
– .NET collections,
strings, files,…: LinQ to Objects
– Entity Framework:
LinQ to Entities
Xem hình minh họa,
Đọc thêm về LinQ ở đây: https://trachanhso.net/linq-la-gi/
Lab 18. Tạo một ứng dụng đơn giản có sử dụng thư
viện LinQ.
[Giao diện]
Giao diện gồm: textBox
để nhập món ăn cần tìm (txtKey), một button có tên là “Tìm món ăn” (btnSearch),
một comboBox để liệt kê tên các món ăn (cbData, để thuộc tính DropDownStyle là Simple),
một comboBox để hiển thị kết quả tìm kiếm (cbResult, để thuộc tính DropDownStyle
là Simple), và hai label.
[Tạo dữ liệu cho ứng
dụng]
List<Food>
foodList;
public Form1()
{
InitializeComponent();
LoadFood();
}
void LoadFood()
{
foodList = new List<Food>();
foodList.Add(new Food("Bánh
tráng trộn", "7000"));
foodList.Add(new Food("Kem
trái cây", "15000"));
foodList.Add(new Food("Chè
Thái", "10000"));
foodList.Add(new Food("Chè
chuối", "8000"));
foodList.Add(new Food("Bánh
tráng hành", "5000"));
foodList.Add(new Food("Xắp
xắp", "6000"));
foodList.Add(new Food("Bánh
bao chiên", "5000"));
cbData.DataSource = foodList;
cbData.DisplayMember = "Name";
}
}
public class Food
{
private string name;
private string price;
public string Price
{
get { return price; }
set { price = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public Food() { }
public Food(string name, string price)
{
this.Name = name;
this.Price = price;
}
}
[Một số chức năng
tìm kiếm, sử dụng LinQ]
– Tìm phần tử
private void
btnSearch_Click(object sender, EventArgs e)
{
List<Food> result = new List<Food>();
// cách tìm kiếm dùng vòng lặp
//foreach(Food item in foodList)
//{
// if(item.Name == txtKey.Text)
// {
// result.Add(item);
// }
//}
// dùng LinQ
result = foodList.Where(p =>
p.Name == txtKey.Text).ToList();
// ý là: tìm trong foodList mọi p,
sao cho (=>) p.Name == txtKey, sau đó chuyển thành List
cbResult.DataSource = result;
cbResult.DisplayMember = "Name";
}
– Lấy mọi phần tử
result =
foodList.Select(p => p).ToList();
– Lấy một kết quả đầu
tiên
var result2 =
foodList.Select(p => p.Name).SingleOrDefault();
– Phân trang bằng Skip(n)
và Take(n)
Skip(n): là bỏ qua n phần tử. Take(n) : là lấy
n phần tử
var result2 =
foodList.Select(p => p).Skip(3).Take(2).ToList();
– Sắp xếp dữ liệu
(ví dụ theo Name)
var result2 =
foodList.OrderBy(p => p.Name).ToList();
Bài học về
EntityFrameWork sẽ học sau khi làm loạt bài về Cơ sở dữ liệu trong dự án Quản
lý quán cà phê.
// bắt đầu kiểm tra lấy điểm thành phần (điểm danh, tài liệu ghi chép, bài thực hành)
<///// hết buổi 13
-----Tiếp theo: Lập trình UD Desktop_12 - Tổng quan về CSDL
Xem thêm: Danh sách các bài học