Lập trình UD Desktop_11 - Timer ProgressBar NumericUpDown Process DateTimePicker LinQ

Bài trước: Lập trình UD Desktop_10 - Thread
-----

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