July 2015



GIỚI THIỆU

   Chào các bạn!
   Hôm nay mình xin giới thiệu với các bạn GroupBox, một Container dùng để "chứa" các Control khác. GroupBox có dạng hình chữ nhật, dùng gom nhóm các Control có liên quan lại với nhau.


   Chúng ta sẽ bắt đầu vào việc tạo một GroupBox, một GroupBox có thể được tạo từ thanh công cụ ToolBox -> Container


THUỘC TÍNH CỦA GROUPBOX

   Cũng tương tự như một số Control cơ bản khác, ở đây mình xin giới thiệu thuộc tính Dock hay dùng với GroupBox. Bạn có thể scroll chuột và tự tìm hiểu vì nó cũng rất đơn giản
- Top, Bottom, Left, Right: Nó sẽ đưa Groupbox của bạn lên từng góc cụ thể.
- Center: Mở rộng Groupbox, sao cho lấp đầy hết form.
- None: Mặc định, tắt chức năng Docking



SỰ KIỆN CỦA GROUPBOX

Sự kiện mặc định của groupBox là groupBox_Enter, sự kiện này được chạy khi Control chứa trong groupBox trở thành active control của Form. Ví dụ ta có Form như sau.
   Con trỏ ban đầu ở khung textBox, Khi ta tab nó chuyển sang các Control khác, và khi chuyển đến Button1 thì sự kiện Enter sẽ chạy, và mình đã xuất ra thông báo bằng MessageBox   
   Ngoài sự kiện này ra thì Groupbox còn nhiều sự kiện khác nhưng theo mình là không đáng để bận tâm tới

   Trên là những thứ cơ bản về Groupbox, mọi thắc mắc cứ liên hệ trực tiếp với mình. Như thường lệ là đoạn code đơn giản từ cái proj của mình cho các bạn đoán kết quả
public void ShowSearchForm(MainForm mainfrm)
{
       PopupForm search = new PopupForm(mainfrm);

       search.label.Text = "TÌM KIẾM HỌC SINH";

       search.groupBoxAdd.Visible = false;
       search.groupBoxEdit.Visible = false;
       search.groupBoxSearch.Visible = true;

       search.Show();
}


public void ShowAddForm(MainForm mainfrm)
{     
       PopupForm add = new PopupForm(mainfrm);

       add.label.Text = "THÊM HỌC SINH";

       add.groupBoxAdd.Visible = true;
       add.groupBoxEdit.Visible = false;
       add.groupBoxSearch.Visible = false;

       add.Show();
}

public void ShowEditForm(MainForm mainfrm)
{
       if(SelectedStudentId != "0")
       {
            PopupForm edit = new PopupForm(mainfrm);

            edit.label.Text = "SỬA HỌC SINH";

            edit.groupBoxAdd.Visible = false;
            edit.groupBoxEdit.Visible = true;
            edit.groupBoxSearch.Visible = false;

            edit.Show();
       }
       else
            MessageBox.Show("Chọn sinh viên cần sửa!", "Thông báo");
                 
}

TỔNG  KẾT

Groupbox không phải là một control thú vị trong lập trình C# Winform, nhưng chắc chắn nó là một control rất hữu dụng. Nó có thể giúp tạo một giao diện rõ ràng và dễ sử dụng cho chương trình của bạn
Chào các bạn, chúc các bạn học tốt!



Chào các bạn!

Hôm nay tiếp tục series lập trình winform cơ bản với ngôn ngữ C#, mình xin giới thiệu với các bạn một control mới rất hay sử dụng trong các Form đăng ký thông tin. Chính là ComboBox. 


GIỚI THIỆU

Một ComboBox hiển thị như một Textbox kết hợp với một Listbox, cho phép người dùng lựa chọn các mục từ danh sách hoặc nhập một giá trị mới.




THUỘC TÍNH CỦA COMBOBOX

   ComboBox cũng có các thuộc tính giống như các Control cơ bản khác. Nhưng có thêm các thuộc tính mới dạng DropDown như DropDownStyle, DropDownWidth, MaxDropDownItems...
Thuộc tính cơ bản của Control

- DropDownStyle: Thuộc tính DropDownStyle xác định các mà danh sách được hiển thị. Thuộc tính DropDownStyle cũng xác định xem phần văn bản có thể được chỉnh sửa hay không.
Với:
- Simple: hiện ngay list item có sẵn.
- DropDownList: là danh sách hiện ra cố định, không thể tự nhập/chỉnh sửa item trong ComboBox.
DropDown: có thể thêm item mới bằng tay và chỉnh sửa Item đã chọn.

Các bạn hãy thử chỉnh sửa các thứ này ngay trong code của mình:
Vd: 
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;

  
 - MaxDropDownItems: Xác định số lượng Item tối đa khi mở danh sách sẽ hiện ra cho các bạn


PHƯƠNG THỨC CỦA COMBOBOX

   Phương thức thường thấy nhất là các phương thức thêm/xóa/sửa dữ liệu trong ComboBox. Để thêm vào ta dùng phương thức Add, để xóa tất cả Item đã thêm ta dùng phương thức Clear, để xóa item cụ thể ta dùng phương thức Remove,...
//Thêm dữ liệu
comboBox1.Items.Add("IceTea Việt");
comboBox1.Items.Add("Lập trình cuộc sống");
comboBox1.Items.Add("Xe đạp");

//Xóa dữ liệu cụ thể bằng chính Text của dữ liệu đó
comboBox1.Items.Remove("Xe đạp");
//Ta cũng có thể xóa theo chỉ số của item đó trong List dữ liệu
comboBox1.Items.RemoveAt(2); //Xóa item thứ 3 trong dữ liệu, vì 2 là index
 
   LẤY DỮ LIỆU TỪ COMBOBOX: 
   Có thể lấy dữ liệu băng nhiều cách, tham khảo đoạn code sau
//Lấy trực tiếp từ thuộc tính Text của ComboBox
//Nhưng nếu ComboBox chưa được chọn thì sẽ không có giá trị
string var;
var = comboBox1.Text;

//Lấy giá trị qua thuộc tính SelectedItem
var item = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);
//Hoặc lấy theo Text mình muốn
var item = this.comboBox1.GetItemText(this.comboBox1.FindStringExact("Xe đạp"));

SỰ KIỆN CỦA COMBOBOX
   Sự kiện của ComboBox không nhiều, sự kiện mặc định của nó là comboBox_SelectedIndexChanged, xảy ra khi chúng ta chọn một Item mới trong ComboBox.

   Bài viết về ComboBox mình đến đây là dài đối với các bạn rồi, mình còn một sô vấn đề muốn nói về ComboBox nữa, thôi thì để bài sau vậy.
Như thường lệ là một đoạn code để các bạn đoán kết quá. Đoạn này có vẻ dễ nhỉ :D
private void Form1_Load(object sender, EventArgs e)
{
        comboBox1.Items.Add("weekdays");
        comboBox1.Items.Add("year");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
        comboBox2.Items.Clear();
        if (comboBox1.SelectedItem == "weekdays")
        {
            comboBox2.Items.Add("Sunday");
            comboBox2.Items.Add("Monday");
            comboBox2.Items.Add("Tuesday");
         }
         else if (comboBox1.SelectedItem == "year")
         {
            comboBox2.Items.Add("2012");
            comboBox2.Items.Add("2013");
            comboBox2.Items.Add("2014");
         }
}
   
TỔNG KẾT
   
Bằng cách kết hợp Textbox và một danh sách drop-down thông thường, Combobox đại diện cho một control thực sự hữu ích, một hybrid widget trong C# Winform. Nó cũng tạo ra ý tưởng về các hộp thoại dialogs, nơi mà sẽ có các gợi ý cho người dùng từ danh sách drop-down và lại chấp nhận được tất cả giá trị input bất kì

   Bài sau về ComboBox mình sẽ gửi đến các bạn cách gán một DataSource với ComboBox, AutoComplete với ComboBox, ở một cách nhìn đơn giản nhất :D Có lẽ mình sẽ viết bài đó sau khi hướng dẫn cho các bạn một chút về DataSet, DataTable

   Chào các bạn, chúc các bạn học tốt!


    
     Chào các bạn!
     Là 1 developer, nếu không học lập trình từ sách thì bạn đã bỏ lỡ 1/2 sự nghiệp của mình. Nhiều bạn cho rằng developer thì cần quái gì đọc sách, code nhiều là giỏi thôi. Vâng nó khá đúng vì các cụ xưa nay có câu "practice make perfect"! Tuy nhiên làm nhiều cũng phải có phương pháp, đúng cách mới tốt được. Nếu cứ cắm đầu cắm cổ code theo 1 kiểu mãi thì sẽ không bao giờ khá lên được đâu!
     Về sách mình đọc cũng kha khá, từ sách tiểu thuyết đến sách lập trình. Theo cuốn Code Complete thì trung bình mỗi developer đọc ít hơn 1 cuốn sách mỗi năm. Vậy nếu bạn đọc 1 quyển/năm thì bạn đã giỏi hơn 90% dev rồi đó =)). Nhân dịp Win10 vừa ra bản RTM, Icetea Việt chọn lọc 10 programming books bằng tiếng Anh về design, C, C#, C++, HTML, Cloud Computing, Java, JavaScript,.. dựa theo danh sách mình sưu tầm được từ blog Coding Honor và nhiều nguồn khác!


TẠI SAO PHẢI ĐỌC SÁCH

     Khi lần đầu tiên chọn lọc danh sách này, bạn biết mình nghĩ gì không ạ? Lúc đó mình nghĩ rằng đúng là chết tiệt thật, giá như mình biết được danh sách này sớm hơn. Bởi trước đó vì không ai bày cho nên đọc sách gì, nên mình đã cắm cổ đọc sách về một công nghệ nhất định nào đó như là ASP.NET, JAVA, PHP,... như điên. Mình thức cả đêm để download hàng trăm cuốn sách, hàng chục GB tài liệu rồi cuối cùng bỏ đó. Và cách đọc sách của mình cũng sai nữa, vớ được cuốn nào là mình đọc hùng hục từ đầu đến cuối, có khi hứng lên còn đọc luôn cả phần lời cảm ơn nữa! :)
     Sau này mình mới biết có những cuốn kinh điển như “Code Complete 2″ là sách gối đầu giường của các lập trình viên Âu Mỹ cho đến Ấn Độ, Họ hay đọc các quyển sách về tư duy, giải thuật, phong cách lập trình. Mình nghĩ cuốn này nên dịch ra để làm giáo trình cho sinh viên đại học CNTT ở Việt Nam thì tốt biết mấy.
Bạn đã có cuốn sách để đầu giường cho riêng mình?

1. Code Complete 2 – Steve McConnell


     Cuốn sách Code Complete 2 của tác giả Steve McConnell đối với các nhà phát triển phần mềm thì cũng nổi tiếng như cuốn Joy of Cooking dành cho các chuyên gia đầu bếp vậy. Đọc nó nghĩa là bạn yêu thích công việc của mình, bạn có thái độ nghiêm túc về cái bạn làm, và bạn muốn làm cho nó trở nên tốt hơn. Trong Code Complete, tác giả Steve ghi chú rằng lập trình viên trung bình đọc ít hơn một cuốn sách kỹ thuật mỗi năm. Và với việc đọc cuốn sách này thì đã giúp kéo bạn ra xa khỏi 90% các đồng nghiệp của còn lại. Dĩ nhiên là theo hướng tốt hơn.
     Nếu bạn muốn trở thành một dev chuyên nghiệp thì nên đọc quyển này, vì nó dạy cho bạn tư duy xử lý vấn đề. Từ cách thiết kế class, đến cách đặt tên biến, method,...     

2Advanced Linux Programming – CodeSourcery LLC , Mark L. Mitchell, Alex Samuel, Jeffrey Oldham


     “Advanced Linux Programming có đầy đủ thông tin từ thread management, interprocess communication, shared memory, devices, cho đến implementing inline assembly code… Đây là một quyển sách PHẢI ĐỌC dành cho người muốn biết về Linux
     “Quyển sách này đúng là đáng kinh ngạc. Mọi thông tin và ví dụ thực tế đều được chứa đựng trong hơn 300 trang sách. Tôi được hướng dẫn từng bước căn bản từ tạo basic applications, shared & static libraries, sockets, pipes & security, forks/threads đến nhiều ví dụ cụ thể về synchronization mechanisms.”

3. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)


     Có nhiều ý kiến cho rằng đây là cuốn sách “kinh điển” duy nhất trong lĩnh vực phát triển phần mềm của chúng ta. Nó như là "Kinh Thánh" trong giới dev và PM. Nếu bạn vẫn chưa đọc nó, thì thật đáng hổ thẹn.
Tôi thách thức bất kỳ lập trình viên nào đọc cuốn The Mythical Man Month mà lại không tìm thấy câu chuyện về một hệ điều hành không tồn tại nữa, và nhóm người đã phát triển ra nó, rất đáng ngạc nhiên là chúng lại rất liên quan đến vấn đề của bạn ngày nay. Cuốn sách 30 năm tuổi đã minh họa sâu sắc một quan điểm rằng: máy tính có thể thay đổi, nhưng con người thì không. Bằng chứng là những gì quyển sách đã nói cách đây 30 năm đến giờ vẫn còn chính xác!
     Đọc cuốn sách kinh điển này chắc chắn sẽ tốt hơn rất nhiều việc bạn sử dụng thời gian để nghiền ngẫm trên hàng ngàn trang tài liệu kỹ thuật mới nhất hiện nay. Tuy không giúp bạn code giỏi hơn, nhưng giúp bạn có cái nhìn tổng quan về ngành Công nghệ phần mềm!

4. C# Yellow Book – Rob Miles

     “Nếu bạn chưa bao giờ lập trình thì đây là cuốn sách dành cho bạn – beginner – với nhiều hướng dẫn cực kỳ dễ theo dõi… Phần lớn topic về C# đều được tác giả đề cập đến trong C# Yellow Book nhưng những vấn đề “khó nhằn” nhất thì lại bị bỏ qua.”
     “Quyển sách này không chỉ dạy bạn những điều căn bản về C# programming mà còn nhiều lý thuyết lập trình khác. Nếu bạn muốn học lập trình thì đây là 1 khởi đầu đúng đắn dành cho bạn.

5. Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. Martin


     Tất cả ví dụ trong sách là của Java, nhưng phần hướng dẫn có thể được áp dụng trong hầu hết các trường hợp, ngôn ngữ khác nhau.”
“Chương khó nhất và cũng giá trị nhất là ‘Refactoring of the class SerialDate’ (từ thư viện JCommon.) Nó là một ví dụ thực tế và tác giả đã mô tả từng bước refactoring để người đọc dễ nắm bắt hơn. Chương cuối cùng, ‘Smells và Heuristics’ là 1 kết thúc tốt trình nêu nhiều vấn đề tiềm năng và đề xuất cách giải quyết /giảm thiểu chúng.”

6. Don’t Make Me Think: A Common Sense Approach to Web Usability

     Một cuốn sách rất hay về thiết kế giao diện. Sách viết về usability (tính dễ sử dụng của phần mềm). Tác giả Steve Krug đã bao quát mọi khái niệm quan trọng về usability trong cuốn sách này, và ông làm công việc đó rất tốt. Sách không dạy các bạn thiết kế giao diện sao cho đẹp, nhưng nó dạy chúng ta cách thiết kế đơn giản, dễ sử dụng, không gây khó khăn cho người dùng. Đọc cuốn sách này thì rất vui. Nếu bạn chọn đọc chỉ một cuốn sách về usability, thì hãy lựa chọn cuốn này. Nó chứa rất nhiều thông tin tuyệt vời, và hình thức trình bày thì ngắn gọn súc tích, dễ áp dụng theo. Nó phù hợp với bất kỳ độc giả nào: dân kỹ thuật, không phải dân kỹ thuật, người dùng bình thường, lập trình viên, nhà quản lý v.v…
     Nó đưa ra một qui tắc rất đơn giản khi thiết kế giao diện: người dùng rất lười, hãy thiết kế sao cho người dùng ít phải suy nghĩ nhất. Và về sự đắt giá của giao diện người dùng, chỉ cần thay đổi 1 button có thể tăng doanh thu lên đến 500 000$ trong 1 năm!

7. Core HTML5 Canvas: Graphics, Animation, and Game Development (Core Series) –David Geary


Flash hiện đang chết - và bây giờ là thời đại của HTML5??? 
     Như chúng ta đều biết thì dạo này Flash rất hay bị tấn công, lỗi và bị chặn trên đa số trình duyệt, các ông lớn là Facebook và Google cũng đang dần chuyển sang HTML5, vậy dại gì mà chúng ta không thử tìm hiểu 1 chút về các lợi ích của chúng?
     “Cuốn sách này cực kỳ chi tiết và hướng dẫn của tác giả cũng đúng vào những điều trọng tâm nhất.” Chương 1 bao gồm các yếu tố cần thiết của canvas element như event handling, sử dụng HTML element trong canvas element, in canvas. Chương 2 giới thiệu cách vẽ canvas. David bắt đầu với những điều cơ bản như vẽ hình học căn bản và từng bước nâng kỹ thuật lên bằng cách sử dụng bezier curves, path manipulation, và transformations.”
     “David hướng dẫn người đọc qua nhiều ví dụ bằng hình ảnh, video, animation, sprites, game physics và mobile development. Code trong ví dụ của ông rõ ràng và được trình bày theo thứ tự với nhiều màu sắc khác nhau… Mặc dù Core HTML 5 Canvas tập trung vào game development nhưng mọi thông tin trong sách đều có ích cho mọi application developer.”

8. C++ GUI Programming With Qt 3 – Jasmin Blanchette và Mark Summerfield


     “6 chương đầu tiên cung cấp một nền tảng rất vững chắc về Qt. Các chương nổi bật gồm: chương 1 cung cấp kiến thức nền tảng vững chắc về Qt, chương 3 nói về modeless application development với nhiều ví dụ dễ hiểu, và chương 6 nói về layout management.”
    “Qt là 1 application framework đòi hỏi bạn phải đối mặt với vấn đề về files, sockets, và network programming. Quyển sách này giúp bạn giải quyết tất cả những vấn đề đó.”

9. JavaScript: The Good Parts – Douglas Crockford

     “Đây là quyển sách dành cho người có nhiều năm kinh nghiệm lập trình, muốn tìm hiểu cách tốt nhất để tạo và sử dụng objects, arrays, types, v.v… Kinh nghiệm của Crockford về JavaScript hướng dẫn tôi nhiều kỹ thuật, style coding thực tế.”
     “Quyển sách mỏng nhưng cực kỳ đầy đủ thông tin với nhiều lời khuyên hữu ích đến từ vô số developer có kinh nghiệm lập trình JavaScript trong nhiều năm. Tôi đồng ý và không đồng ý với Crockford ở một vài quan điểm, nhưng những quan điểm của ông đáng để đọc và suy ngẫm rồi rút ra ý kiến của riêng mình.“

10. The Design of Everyday Things - Donald A Norman

     Công việc phát triển phần mềm có thể làm bạn nản lòng đến mức khó tin, bởi vì có quá nhiều thứ có thể trở nên sai sót. Có rất nhiều thứ chúng ta làm là để phòng thủ: cố gắng đoán trước điều gì sẽ trở nên sai trước khi nó xảy ra. Nó là nguyên nhân làm bạn kiệt sức về tinh thần, và thậm chí có thể biểu lộ bản thân theo một số cách khá tiêu cực. Đôi khi tôi mô tả công việc này với những người không chuyên về kỹ thuật như thể tôi đang tạo ra một cái đồng hồ với hàng ngàn chi tiết nhỏ, tất cả chúng có thể hỏng một cách ngẫu nhiên vì những kích thích nhỏ nhất.



Sau khi xem qua danh sách này thì chúng ta hãy cùng đọc lại một đoạn trong bài viết của một lập trình viên khá nổi tiếng tại Ấn Độ nhé:
“Cũng giống như ngoài đại dương bao la kia, phía trên bề mặt thì sóng rất dữ dội nhưng ở mực nước sâu thì mọi thứ tương đối yên tĩnh, phẳng lặng và hầu hết các sinh vật sống và phát triển tại đây. Vì thế, hãy tự cảm nhận rằng mình đang ở mực nước sâu và tiến gần với những công nghệ cốt lõi. Bạn hãy dành nhiều thời gian để học về những khái niệm cốt lõi hơn là cứ ngồi đó mà lo lắng về những framework và công cụ luôn thay đổi xoành xoạch xung quanh nó. Cùng với nền tảng vững chắc của những kiến thức cốt lõi, bạn sẽ luôn dễ dàng học được những framework, công cụ và các API mới.”
Chào các bạn và chúc các bạn học tốt! 



   Chào các bạn! 
   Sau mấy ngày lười biếng thì hôm nay mình đã trở lại và ăn hại hơn xưa :D, phần vì ở là nghỉ hè nên lười, chỉ muốn chơi game và xem phim, phần vì mình vừa code xong game cờ Caro với con stupid A.I. Ai muốn chơi thử thì liên hệ mình nhé :D


GIỚI THIỆU

Hôm nay mình sẽ giới thiệu với các bạn 2 control đơn giản và cần thiết là RadioButtonCheckbox. Chúng ta hãy cùng xem có thể làm đc gì với nó nhé 



RADIO BUTTON

     RadioButton cho phép người dùng chỉ được chọn một lựa chọn duy nhất trong các lựa chọn cùng 1 "nhóm". Có nghĩa là nếu 1 nhóm các RadioButton thì nếu bạn check một nút, thì tất cả các nút còn lại đều ở trạng thái unchecked. Giống như bảng chọn giới tính thì chỉ được chọn Nam hoặc Nữ, chứ làm sao mà có kiểu lai hóa giữa 2 cái như vậy đc =))

     Một RadioButton có thể hiển thị nội dung text, hình ảnh hoặc cả 2. Các thuộc tính của RadionButton cũng tương tự như các control khác. Nhưng nó có thêm một thuộc tính Checked để lưu trạng thái đã chọn hay chưa chọn của nút
     Để thay đổi trạng thái cho RadioButton ta dùng cú pháp sau:
tênRadioButton.Checked = true;
 Ta tiếp tục với ví dụ sau: Ta có một form như hình: 
Ta sẽ viết code cho mặc định là nút đầu tiên sẽ được check, và nếu mục nào đang được check, khi bấm vào button1 thì nó sẽ hiện nội dung của mục đó.
//Ta dùng sự kiện FormLoad để mặc định cho nút đầu tiên được chọn
private void Form1_Load(object sender, EventArgs e)
{
       radioButton1.Checked = true;
}

//Sau đó xử lý sự kiện click cho Button1
private void button1_Click(object sender, EventArgs e)
{
       if (radioButton1.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 1 với nội dung là: " + radioButton1.Text);
           return;
       }
       else if (radioButton2.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 2 với nội dung là: " + radioButton2.Text);
           return;
       }
       else if (radioButton3.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 3 với nội dung là: " + radioButton3.Text);
           return;
       }
       else if (radioButton4.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 4 với nội dung là: " + radioButton4.Text);
           return;
       }
}
Và kết quả sẽ là:

CHECKBOX

     Không như RadioButtons chỉ có thể chọn một mục cho cả nhóm và khi đã chọn rồi thì không thể deselect (hủy chọn) được, thì Checkbox ta có thể chọn nhiều mục khác nhau cùng lúc và có thể chọn và hủy tùy ý. Checkbox thường được sử dụng để tạo các sự lựa chọn cho người dùng. Một ví dụ kinh điển là khi đăng kí tài khoản hay cài đặt phần mềm ta hay chọn vào "Tôi đồng ý với điều khoản trên..." :D
     Các thuộc tính cơ bản của Checkbox cũng giống tương tự như các Control cơ bản khác, tuy nhiên có thêm thuộc tính Checked, CheckState ThreeState
Các thuộc tính cơ bản của CheckBox
     THREE STATE CỦA CHECKBOX: Ta nói thêm về ThreeState. Khi đã bật lựa chọn này thì người dùng có thể tự do lựa chọn 3 lựa chọn trên một CheckBox là Checked, UnChecked và Indeterminate. Nếu ThreeState không được bật thì ta chỉ có thể cho Checkbox vào trạng thái Indeterminate bằng code, không trưc tiếp trên Form được. Tham khảo thêm trên MSDN

     Về sự kiện, ta có sự kiện hay dùng nhất của CheckBox đó là CheckedChangedCheckStateChanged. Ví dụ với đoạn code sau:
//Sự kiện CheckedChanged chỉ theo dõi được hai trạng thái???
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
       checkBox4.ThreeState = true;
       if(checkBox4.CheckState == CheckState.Checked)
       {
            MessageBox.Show(checkBox4.Text + " đang được chọn");
       }
       else if(checkBox4.CheckState == CheckState.Unchecked)
       {
            MessageBox.Show(checkBox4.Text + " không được chọn");
       }
       else if(checkBox4.CheckState == CheckState.Indeterminate)
       {
            MessageBox.Show(checkBox4.Text + " đang ở trạng thái Indeterminate");
       }
}

//Sự kiện CheckStateChanged theo dõi được cả ba trạng thái, bao gồm cả Indeterminate???
private void checkBox5_CheckStateChanged(object sender, EventArgs e)
{
       checkBox5.ThreeState = true;
       if (checkBox5.CheckState == CheckState.Checked)
       {
           MessageBox.Show(checkBox5.Text + " đang được chọn");
       }
       else if (checkBox5.CheckState == CheckState.Unchecked)
       {
           MessageBox.Show(checkBox5.Text + " không được chọn");
       }
       else if (checkBox5.CheckState == CheckState.Indeterminate)
       {
           MessageBox.Show(checkBox5.Text + " đang ở trạng thái Indeterminate");
       }
}
Và kết quả sẽ là khi ta chọn checkbox IceTea Việt thành Indeterminate thì nó sẽ không "lắng nghe" được và không xuât thông báo, còn ở checkbox iceteaviet.blogspot.com thì nó hoàn thành tốt cả ba trạng thái trong sự kiện

     Ngoài các sự kiện trên bạn cũng có thể kết hợp các control đã học để tùy biến cho các sự kiện của Checkbox và RadioButton. 


TỔNG KẾT
   RadioButton và Checkbox trong C# Winforms là những control cho phép người dùng xác định những chọn lựa của mình thông qua những gợi ý, đề xuất từ chương trình. Là những control hữu dụng không thể thiếu trong các chương trình hiện nay

     Bài này đến đây là kết thúc rồi, các bạn cũng đã học gần hết các Control cơ bản rồi đó, sau khi học đầy đủ chúng ta lại làm đồ án thôi :D :D Nhớ làm bài Pet Project #1 của mình tại đây nhé: http://iceteaviet.blogspot.com/2015/07/winform-c-can-banproject-1-phan-mem.html

     Chào các bạn, chúc các bạn học tốt!


Chào các bạn!

    Sau 4 Control đã học, thì bây giờ có lẽ các bạn đang rất muốn làm một thứ gì đó để làm mốc cho những gì mình học đúng không? 
Như mình đã hứa và cũng là mục tiêu của blog - Tutorial with example. Và bây giờ mình sẽ gửi đến các bạn yêu cầu của đồ án 1 - Phần mềm Calculator
Phần mềm Calculator trên Win 8
Rồi yêu cầu của mình là: Chỉ với 4 control đã học (textBox, Label, MessageBox, Button)
 - Giao diện tương tự như Calculator của Windows, có đầy đủ nút bấm và chức năng tương tự, nếu thêm được chức năng mới thì càng tốt
 - Có khung đăng nhập, nếu chưa đăng nhập thì các nút chức năng bị mờ đi không dùng được
 - Thực hiện phần hiển thị phép tính, hiện thị kết quả, cách nhập xuất tương tự Calculator
 - Có thể thêm chức năng giải phương trình, hoặc các chức năng khác nếu thích

Các bạn có thể xem chi tiết yêu cầu và bản Demo của mình tại video sau:



Các bạn có 2 tuần để làm, sau 2 tuần mình sẽ đăng source code lên và kèm theo bài hướng dẫn nho nhỏ nhé :D

Link source code demo:  http://www.mediafire.com/download/ka2q3330uw3pqz0/DemoCalc.rar


Chúc các bạn học tốt và cố gắng hoàn thành Pet Project đầu tay cho mình nhé 


Chào các bạn!
Mình xin giới thiệu với các bạn một số tài liệu tham khảo cũng như giáo trình nhập môn lập trình C/C++ dành cho các bạn mới học. Mức độ dừng ở sinh viên năm nhất của ngành CNTT, với các khái niệm cơ bản về lập trình



TÀI LIỆU THAM KHẢO TIẾNG ANH

Bao gồm: 
- Data structures and Program Design in C++ (Robert L. Kruse)
- Introduction to Algorithms - Third Edition (THOMAS H. CORMEN)
- Và 1 số chuyên đề tham khảo khác.. 

TIN HỌC ĐẠI CƯƠNG UIT 

Đây là bộ tài liệu tham khảo phục vụ cho môn học Nhập môn lập trình tại trường ĐH Công nghệ thông tin – ĐHQG-HCM. Mời các bạn cùng tham khảo.

NHẬP MÔN LẬP TRÌNH FIT HCMUS



Đây là bộ tài liệu phục vụ cho môn học Nhập môn - Kỹ thuật lập trình của khoa CNTT tại trường ĐH Khoa học tự nhiên – ĐHQG-HCM. Mời các bạn cùng tham khảo.

TRANG HỖ TRỢ HỌC LẬP TRÌNH

Đặc biệt: Các bạn nên "học" cách search bằng Tiếng Anh các thứ mình cần trên http://stackoverflow.com/ . Nó sẽ giúp ích cho các bạn rất nhiều sau này :D

Lưu ý: Tài liệu chỉ sử dụng cho mục đích tham khảo và học tập. Chúc các bạn học tốt.


GIỚI THIỆU

Chào các bạn!

Hôm nay mình xin nói sơ về chức năng khá hay của Textbox đó là AutoComplete
Chức năng Autocomplete giúp gợi ý, tự hoàn thiện từ khi gõ của Textbox C#: Đây là một chức năng khá hay và làm tăng tính chuyên nghiệp của phần mềm bạn làm lên rất nhiều!
Chức năng AutoComplete của Textbox trong C#

Nó gồm có 3 thuộc tính:

AutocompleteCustomSource 
Là một Collection, nơi chứa những từ gợi ý. Khi gõ vào những từ gần giống trong này thì nó sẽ xuất hiện gọi ý. (chỉ dùng làm nguồn cho chế độ CustomSource).
Ta có thể thêm từ vào đây bằng code thông qua AutoCompleteStringCollection. Hoặc thêm vào thông qua Properties ở ngoài giao diện form:

 
 AutoCompleteMode 
Là kiểu gợi ý. Có 3 chế độ là
   + Suggest: gợi ý ở dạng danh sách, muốn chọn phải ấn chuột hoặc ấn phím di chuyển
   + Append: khi gõ từ gần đúng thì nó sẽ hoàn thiện luôn
   + SuggestAppend: (nên dùng) nó kết hơp cả 2 cái trên. Tức là sẽ vừa hiện thị danh sách gợi ý vừa hoàn thiện luôn.


 AutocompleteSoure  
  + CustomSource: lấy những từ đã gõ trong AutocompleteCustomSource để gợi ý
   + HistoryList: lấy những từ đã gõ để gợi ý
   + Các mode còn lại ít dùng nên mình sẽ không đề cập ở đây.

Sau đây là đoạn code tham khảo về cách thiết lập AutoComplete bằng code:

 private void Form1_Load(object sender, EventArgs e)
 {
       LoadDataToCollection();
       SetDataToCollection();
 }
 

//Thêm bằng tay vào Collection các từ khóa
 private void SetDataToCollection()
 {
       AutoCompleteStringCollection auto1 = new AutoCompleteStringCollection();
       txtBox1.AutoCompleteMode = AutoCompleteMode.Append;
       txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
       txtBox2.AutoCompleteMode = AutoCompleteMode.Suggest;
       txtBox2.AutoCompleteSource = AutoCompleteSource.CustomSource;
       string[] arrayName ={"Tâm",
                          "Nhã",
                          "Sơn",
                          "Phúc",
                          "Huyền",
                          "Ngân",
                          "Tấn Huy",
                          "Huy Tôi",
                          "Nguyễn ",
                          "iceteaviet.blogspot.com",
                          "iceteaviet.blogspot.com/2015/07/lam-quen-voi-textbox-trong-c.html",
                          "iceteaviet.blogspot.com/2015/07/hoc-c-thi-bat-au-tu-au.html",
                          "iceteaviet.blogspot.com/2015/07/oi-tuong-button.html"
                               
                          };
       foreach (string name in arrayName) 
       {
           auto1.Add(name);
       }
 
       txtBox1.AutoCompleteCustomSource = auto1;
       txtBox2.AutoCompleteCustomSource = auto1;
}


//Thêm các từ khóa từ cơ sở dữ liệu (các bạn nào chưa học qua SQL Ser thì khỏi quan tâm nhé)
private void LoadDataToCollection()
{
      AutoCompleteStringCollection auto2 = new AutoCompleteStringCollection();
           
      string strConnection = "Data Source=.\\SQLEXPRESS; Database=Northwind;Integrated Security=true;";
      SqlConnection conn = new SqlConnection();
      conn.ConnectionString = strConnection;
      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.CommandType = CommandType.Text;
 
      string sql = "Select  ContactName from Customers ";
      SqlCommand com = new SqlCommand();
 
      com.Connection = conn;
      com.CommandText = sql;
      com.CommandType = CommandType.Text;
      conn.Open();
      SqlDataReader reader ;
      reader = com.ExecuteReader();
      if(reader!=null)
      {
             while(reader.Read())
             {
                auto2.Add(reader["ContactName"].ToString());
             }
      }
 
      txtName1.AutoCompleteMode = AutoCompleteMode.Append;
      txtName1.AutoCompleteSource = AutoCompleteSource.CustomSource;
      txtName1.AutoCompleteCustomSource = auto2;
 
      txtName2.AutoCompleteMode = AutoCompleteMode.Suggest;
      txtName2.AutoCompleteSource = AutoCompleteSource.CustomSource;
      txtName2.AutoCompleteCustomSource = auto2;
 
 
}

TỔNG KẾT
Chức năng AutoComplete của textbox thường được dùng để làm gợi ý cho khung tra từ điển, danh bạ. Hoặc các phần mềm có mục điền thông tin thay vì dùng Combobox bạn có thể dùng textbox với Autocomplete sẽ làm cho phần mềm bạn trở nên chuyên nghiệp hơn nhiều.
Các bạn cũng có thể tự built cho mình một Control Autocomplete như thế. Tham khảo bài viết của tác giả Psycho Coder Tại đây. Hoặc tham khảo thêm tại đây và trên MSDN

Chào các bạn và chúc các bạn học tốt :D Hẹn gặp lại ở bài sau!



Chào các bạn!
Hôm nay mình xin giới thiệu với các bạn một Control thông dụng của lập trình Winform C#, đó là Textbox


GIỚI THIỆU




Chức năng chính: Textbox chủ yếu là để nhập dữ liệu đầu vào, ngoài ra còn có thể dùng để xuất dữ liệu. Các ô tài khoản mật khẩu trên mạng xã hội, các ô nhập thông tin trong phần mềm, các ô lưu tên cho highscore khi chơi game, chúng ta có thể thấy textbox ở khắp mọi ứng dụng hiện nay.
Chúng ta hãy cùng xem có thể làm gì với một textbox nhé


THUỘC TÍNH CỦA TEXTBOX

Cũng giống như ButtonLabel, Textbox cũng có những thuộc tính gần giống với thuộc tính của 2 control mà ta đã được học qua. Dưới đây là bảng những thuộc tính thông dụng nhất của textbox:
Các thuộc tính cơ bản của Textbox

Tương tự như các đối tượng trước ta cũng có thể thay đổi thuộc tính của Textbox thông qua code.
VD:
//Lấy dữ liệu từ textbox
string var;
var = txtBox1.Text;

//Thay đổi thuộc tính
Texbox1.text = "abc"; Textbox1.Enabled = true;...

  • Chức năng AutoComplete của Textbox: Các ban tham khảo bài viết của mình tại đây

  • Thay đổi chiều cao (Height) của Textbox: Ta có nhiều cách để làm việc này. 
  - Thiết lập thuộc tính Multiline cho textbox thành true, bây giờ Textbox sẽ gõ được nhiều dòng (xuống dòng bằng phím Enter) và kèm theo đó ta có thể thay đổi kích thước Width, Height của Textbox tùy ý trên giao diện Form
  - Thiết lập Font Size của Textbox to lên
  - Thiết lập thuộc tính MinimumSize của Textbox
  - Thay đổi trong Form.Designer.cs với các thuộc tính sau:
this.textBox2.AutoSize = false;

//Sau đó thiết đặt Size bất kì mà bạn muốn

this.textBox2.Size = new System.Drawing.Size(142, 27);

SỰ KIỆN CỦA TEXTBOX

 

Cũng giống như button, để thêm sự kiện cho texbox thì chỉ cẩn nháy đúp chuột vào tên sự kiện cần thêm vào là xong!Một số sự kiện thường dùng:- TextChanged: sự kiện xẩy ra khi chữ trong textbox thay đổi- KeyUp: sự kiện khi đang gõ chữ trong textbox (bắt đầu ấn nút). Ứng dụng rất lơn. VD: khi ấn Enter thì chuyển chữ trong textbox vào một biến chẳng hạn- Ngoài ra còn có KeyDown, KeyPress,..cũng có chức năng gần tương tự...- MouseHover, MouseLeave tương tự phần button


Ở đây mình hướng dẫn các bạn 1 số chi tiết nhỏ như:
 -  Thêm dòng mới vào Texbox:
textBox1.Text += "your text" + "\r\n";

//hoặc
 
textBox1.Text += "your text" + Environment.NewLine;

- Lấy giá trị kiểu số (integer, float,..) từ Textbox: Ta dùng phương thức Parse:
int i;
i = int.Parse (textBox1.Text);

//hoặc

float  i;
i = float.Parse (textBox1.Text);
 
Trên là những gì cơ bản về Textbox, các bạn nào muốn tìm hiểu thêm có thể truy cập MSDN để tìm hiểu thêm nhé :D
Như thường lệ là một số đoạn code để các bạn đoán kết quả nhé:

private void txtBox1_KeyDown(object sender, KeysEventArgs e)
{
         if(e.KeyCode = Keys.Enter)
         {
         MessageBox.Show("Đang đăng nhập!");
         }
         if(e.KeyCode == Keys.CapsLock)
         {
          MessageBox.Show("Kiểm tra lại CapsLock");
         }
}



private void txtBox1_TextChanged(object sender, EventArgs e)
{
          lbl1.Text = txtBox1.Text;
}

Và đặc biệt với em này :v
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "  ^ [0-9]"))
            {
                textBox1.Text = "";
            }
        }
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
            {
                e.Handled = true;
            }
        }
    }
}

TỔNG KẾT
Textbox cung cấp cho người dùng một công cụ đắc lực để nhập vào từ bàn phím hoặc các thiết bị input khác. Hầu hết các chương trình hiện nay từ phần mềm tới game đều sử dụng textbox vào nhiều mục đích khác nhau

Chào các bạn, chúc các bạn học tốt. Bài sau mình sẽ đưa các bạn đến với project nho nhỏ đâu tiên nhé :D


Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget