peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikatukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

Cách dùng DateTimePicker - MonthCalendar trong C# (winforms)
CƠ BẢN
SỰ KIỆN
NÂNG CAO
FIREBASE
WINDOWS FORM
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách dùng DateTimePicker - MonthCalendar trong C# (winforms)

Trong bài này chúng ta sẽ tìm hiểu hai đối tượng DateTimePicker MonthCalendar trong C#, đây là hai điều khiển được sử dụng để hiển thị ngày tháng dưới hai hình thức khác nhau trong lập trình Winforms.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chúng ta sẽ cùng nhau tim hiểu về công dụng cũng như các thuộc tính và phương thức, sự kiện của DateTimePicker và MonthCalendar nhé. Sau đó mình sẽ thực hiện một chương trình áp dụng hai điều khiển trên.

1. DateTimePicker trong C#

Điều khiển DateTimePicker cho phép người dùng chọn ngày tháng như một lịch biểu nhưng biểu diễn ở dạng ComboBox.

Các đối tượng ngày tháng biểu diễn trong DateTimePicker thực chất là các đối tượng thuộc lớp DateTime. Điều khiển DateTimePicker được đặt trong nhóm Common Controls của cửa sổ ToolBox.

Bài viết này được đăng tại [free tuts .net]

winforms bai10 04 PNG

Một số thuộc tính thường dùng trong DateTimePicker:

Thuộc tính Mô tả
Format

Đinh dạng kiểu hiển thị của ngày tháng

*Lưu ý: Thường sử dụng giá trị kiểu Short

Value Trả về giá trị hiện thời của điều khiển DateTimePicker
Value.Date Trả về ngày tháng năm
Value.Day Trả về ngày của tháng
Value.Month Trả về tháng
Value.Year Trả về năm
Value.DateOfWeek Trả về ngày của tuần (0 là chủ nhật, 1 là thứ hai, ..., 6 là thứ bảy)
CustomFormat

Cho phép lập trình tạo ra một đinh dạng khác nhau về ngày tháng.

*Lưu ý: Đinh dạng ngày tháng năm như kiểu Việt Nam thì kiểu định dạng phải là dd/MM/yyyy. Khi đó thuộc tính Format phải thiết lập là Cusom

MaxDate Thiết lập ngày lớn nhất cho phép người dùng chọn trên điều khiển DateTimePicker
MinDate Thiết lập ngày nhỏ nhất cho phép người dùng chọn trên điều khiển DateTimePicker

Một số sự kiện thường dùng:

Sự kiện Mô tả
ValueChanged Phát sinh khi người đung chọn giá trị khác với giá trị trước đó trên điều khiển DateTimePicker
CloseUp Phát sinh người dùng kết thúc việc chọn ngày trên điều khiển DateTimePicker

2. MonthCalendar trong C#

MonthCalendar là điều khiển hiển thị lịch dưới dạng một lịch biểu cho phép người dùng chọn ngày tháng. Nhưng khác biệt là MonthCalendar cho phép người dùng có thể chọn một tập các ngày hay nói cách khác là một tập các đối tượng thuộc lớp DateTime.

Điều khiển MonthCalendar được đặt trong nhóm Common Controls.

winforms bai10 03 PNG

Một số thuộc tính thường dùng:

Thuộc tính Mô tả
MaxDate Thiết lập ngày lớn nhất cho phép người dùng chọn trên điều khiển MonthCalendar
MinDate Thiết lập ngày nhỏ nhất cho phép người dùng chọn trên điều khiển MonthCalendar
SelectionRange Trả về một dãy các ngày liên tục được chọn bởi người dùng
SelectionStart Trả về ngày đầu tiên trong dãy tại thuộc tính SelectionRange
SelectionEnd Trả về ngày cuối cùng trong dãy tại thuộc tính SelectionRange
AnnuallyBoldedDates Chứa một mảng các ngày. Trong mỗi năm, các ngày trong mảng sẽ được bôi đen MonthCalendar
BoldedDates Chứa mảng các ngày. Các ngày này sẽ được bôi den trên điều khiển MonthCalendar tại những năm chỉ định
MaxSelectCount Thiết lập số lượng ngày tối đa mà người dùng có thể chọn
MonthlyBoldedDates Chứa mảng các ngày trong mỗi tháng, các ngày trong mảng sẽ được bôi đen trên MonthCalendar

Trong MonthCalendar có một sự kiện được sử dụng rất thông dụng đó chính là DateChanged. Đây là một sự kiện được phát sinh khi một ngày mới hoặc một dãy các ngày mới được chọn.

3. Ví dụ sử dụng DateTimePicker và MonthCalendar trong C#

Trong ví dụ này mình sẽ thực hiện viết chương trình có sử dụng DateTimePicker và MonthCalendar để các bạn hiểu rõ hơn về công dụng cũng như cách nó hoạt động.

Ví dụ sử dụng điều khiển DateTimePicker

Trong ví dụ đầu tiên này mình sẽ thực hiện một chương trình đơn giản trong đó có sử dụng DateTimePicker, cụ thể sẽ thực hiện theo Form dưới đây với một số chức năng tương ứng.

winforms bai10 05 PNG

Chương trình có các chức năng như sau:

  • TextBox "Họ Tên": Chỉ cho phép nhập ký tự hoa hoặc thường, cho phép nhập khoảng trắng và cho phép xóa lùi.
  • TextBox "Số Điện Thoại": Chỉ cho phép nhập số và được xóa lùi.
  • DateTimePicker "Thời Gian": Chỉ cho phép chọn thời gian đăng ký học lớn hơn thời gian hiện tại.
  • Button "Đăng ký": Hiển thị hộp thoại bao gồm các nội dung trong ô TextBox và thời gian được chọn trong DateTimePicker.
  • Button "Thoát": Đóng chương trình.

Đầu tiên chúng ta sẽ tạo Form tương tự như trên:

  • Một số Label với nội dung tương ứng.
  • 3 TextBox để nhập tên, sđt, email.
  • 2 Button để đăng ký và thoát.
  • 1 DateTimePicker để chọn thời gian học.

Sau khi tạo được Form, ta sẽ bắt đầu xử lý sự kiện cho từng TextBox và Button.

Bước 1: Xử lý sự kiện cho TextBox "Họ Tên", với chức năng chỉ cho phép nhập lý tự hoa hoặc thường. cho phép nhập khoảng trắng và xóa lùi.

Ta sẽ viết trên sự kiện KeyPress trong TextBox, sử dụng KeyChar để làm điều kiện.

private void txtHoTen_KeyPress(object sender, KeyPressEventArgs e)
    {
       if (!((e.KeyChar >= 'a' && e.KeyChar <= 'z') ||(e.KeyChar == ' ')|| (e.KeyChar >= 'A' && e.KeyChar <= 'Z') || e.KeyChar == (char)8))
       e.Handled = true;
    }

Bước 2: Xử lý sự kiện cho TextBox "Số Điện Thoại", với chức năng chỉ cho phép nhập số và được xóa lùi.

Tương tự như TextBox "Họ Tên" ta cũng sẽ sử dụng KeyPress KeyChar để viết điều kiện.

private void txtSDT_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == (char)8))
          e.Handled = true;
    }

Bước 3: Xử lý sự kiện cho DateTimePicker "Thời Gian", với chức năng chỉ cho phép chọn thời gian đăng ký học lớn hơn thời gian hiện tại. Ta sẽ viết sự kiện ở FormLoad.

private void Form1_Load(object sender, EventArgs e)
    {
       dateTimePicker1.MinDate = DateTime.Now;
       int dayofmonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
       dateTimePicker1.MaxDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, dayofmonth);
    }

Bước 4: Xử lý sự kiện cho Button "Đăng Ký", với chức năng sẽ hiển thị nội dung trong các ô TextBox và thời gian được chọn trong DateTimePicker trên hộp thoại MessageBox.

private void btnDangKy_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(txtHoTen.Text) || string.IsNullOrEmpty(txtSDT.Text) || string.IsNullOrEmpty(txtEmail.Text))
        {
            MessageBox.Show("Bạn chưa nhập đầy đủ thông tin");
        }
        else if (!string.IsNullOrEmpty(txtHoTen.Text) || !string.IsNullOrEmpty(txtSDT.Text) || !string.IsNullOrEmpty(txtEmail.Text) == true)
        {
            MessageBox.Show("Chúc mừng bạn: " + txtHoTen.Text + "\nSố Điện Thoại: " + txtSDT.Text + "\nEmail: " + txtEmail.Text + "\nThời gian lựa chọn: " + dateTimePicker1.Value.ToShortDateString());
        }
    }

Bước 5: Xử lý sự kiện cho Button "Thoát", với chức năng sẽ đóng chương trình khi người dùng nhấn vào nút này.

private void bntThoat_Click(object sender, EventArgs e)
    {
        Application.Exit();        
    }

Kết quả:

winforms bai10 06 PNG

Full Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Cau5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
    private void btnDangKy_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(txtHoTen.Text) || string.IsNullOrEmpty(txtSDT.Text) || string.IsNullOrEmpty(txtEmail.Text))
        {
            MessageBox.Show("Bạn chưa nhập đầy đủ thông tin");
        }
        else if (!string.IsNullOrEmpty(txtHoTen.Text) || !string.IsNullOrEmpty(txtSDT.Text) || !string.IsNullOrEmpty(txtEmail.Text) == true)
        {
            MessageBox.Show("Chúc mừng bạn: " + txtHoTen.Text + "\nSố Điện Thoại: " + txtSDT.Text + "\nEmail: " + txtEmail.Text + "\nThời gian lựa chọn: " + dateTimePicker1.Value.ToShortDateString());
        }
    }


    private void txtHoTen_KeyPress(object sender, KeyPressEventArgs e)
    {
       if (!((e.KeyChar >= 'a' && e.KeyChar <= 'z') ||(e.KeyChar == ' ')|| (e.KeyChar >= 'A' && e.KeyChar <= 'Z') || e.KeyChar == (char)8))
       e.Handled = true;
    }

    private void txtSDT_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == (char)8))
          e.Handled = true;
    }
   

    private void Form1_Load(object sender, EventArgs e)
      {
         dateTimePicker1.MinDate = DateTime.Now;
         int dayofmonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
         dateTimePicker1.MaxDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, dayofmonth);
      }

    private void bntThoat_Click(object sender, EventArgs e)
    {
        Application.Exit();        
    }
  }
}

Ví dụ sử dụng điều khiển MonthCalendar

Trong ví dụ này mình sẽ thực hiện viết một chương trình trong đó có sử dụng MonthCalendar, cụ thể ta sẽ tạo giao diện như Form dưới đây với các chức năng tương ứng.

winforms bai10 02 PNG

Các chức năng trong chương trình:

  • Button "Hiển thị": Hiển thị ngày bắt đầu chọn (SelectionStart), ngày cuối cùng chọn (SelectionEnd), MinDate, MaxDate, Today.
  • Button "Count Day": Đếm tổng ngày từ lúc SelectionStart đến SelectionEnd.
  • Button "Count Hour": Đếm tổng giờ từ lúc SelectionStart đến SelectionEnd.

Việc đầu tiên ta cần tạo giao diện cho Form tương tự như Form ở trên, bao gồm:

  • Các Label với nội dung tương ứng.
  • 7 TextBox để hiển thị các nội dung.
  • 3 Button để viết sự kiện.
  • 1 MonthCalendar làm lịch biểu.

Tiếp đến ta sẽ lần lượt viết các chức năng cho chương trình.

Bước 1: Xử lý sự kiện cho Button "Hiển thị", với chức năng hiển thị ngày bắt đầu và ngày cuối cùng được chọn, MinDate, MaxDate, Today.

private void btnHienthi_Click(object sender, EventArgs e)
    {
        txtStart.Text = monthCalendar1.SelectionStart.ToShortDateString();
        txtEnd.Text = monthCalendar1.SelectionEnd.ToShortDateString();
        txtmin.Text = monthCalendar1.MinDate.ToShortDateString();
        txtMax.Text = monthCalendar1.MaxDate.ToShortDateString();
        txtDayDate.Text = monthCalendar1.TodayDate.ToShortDateString();
    }

Bước 2: Xử lý sự kiện cho Button "Count Day", với chức năng đếm số ngày được chọn.

private void btnCountday_Click(object sender, EventArgs e)
    {
        int numdays;
        numdays = Convert.ToInt32((monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart).TotalDays);
        txtday.Text = numdays.ToString();
    }

Bước 3: Xử lý sự kiện cho Button "Count Hour", với chức năng đếm số giờ được chọn.

private void btnCountHour_Click(object sender, EventArgs e)
    {
        int numhour;
        numhour = Convert.ToInt32((monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart).TotalHours);
        txthour.Text = numhour.ToString();
    }

Kết quả:

winforms bai10 01 PNG

Full Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Cau2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void btnHienthi_Click(object sender, EventArgs e)
    {
        txtStart.Text = monthCalendar1.SelectionStart.ToShortDateString();
        txtEnd.Text = monthCalendar1.SelectionEnd.ToShortDateString();
        txtmin.Text = monthCalendar1.MinDate.ToShortDateString();
        txtMax.Text = monthCalendar1.MaxDate.ToShortDateString();
        txtDayDate.Text = monthCalendar1.TodayDate.ToShortDateString();
    }

    private void btnCountday_Click(object sender, EventArgs e)
    {
        int numdays;
        numdays = Convert.ToInt32((monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart).TotalDays);
        txtday.Text = numdays.ToString();
    }

    private void btnCountHour_Click(object sender, EventArgs e)
    {
        int numhour;
        numhour = Convert.ToInt32((monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart).TotalHours);
        txthour.Text = numhour.ToString();
    }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

4. Kết luận

Như vậy là chúng ta đã tìm hiểu xong về DateTimePick và MonthCalendar trong lập trình C# winforms. Đây là hai điều khiển khá quan trọng và được sử dụng nhiều, vì vậy các bạn hãy luyện tập nhiều để có thể thành thạo nó nhé. Ở bài tiếp theo mình sẽ tiếp tục giới thiệu các bạn các điều khiển quan trọng khác trong C# winforms. Các bạn nhớ chú ý theo dõi nhé !!!

Cùng chuyên mục:

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Top