Tức là có nhiều phương thức trùng tên, trùng kiểu trả về nhưng khác tham số truyền vào.
Ví dụ:
public int chuVi(int a, int b) { return (a+b); } public int chuVi(int a, int b, int c) { return (a+b+c); }
Ngoài ra trong C# hướng đối tượng còn có một trường hợp ghi đè nữa là Override: tức là có những phương thức trùng tên, trùng kiểu trả về, cùng tham số nhưng định nghĩa khác nhau. Lớp con ghi đè lại phương thức của lớp cha.
public virtual string Show() {} public override string Show() {}
abstract class ConNguoi { public abstract string tinhTuoi(); }
private string hoten; public string HoTen { get { return hoten; } set { hoten = value; } } //khi chạy string name = tenClass.HoTen; //get tenClass.HoTen = "blog cong nghe"; //set
Với mình thì mình sẽ làm cách như thế này. Nhưng mình thấy cách trên lại tiện hơn nhiều nhưng do mình quen cách dưới hơn.
private string hoten; public string HoTen() { return hoten; } public void HoTen(string hoten) { this.hoten = hoten; } //khi chạy string name = tenClass.HoTen(); //get tenClass.HoTen( "blog cong nghe" ); //set
Tên hàm sẽ trùng với tên lớp. Và các bạn lưu ý một điều là khi tạo constructor có tham số thì trình biên dịch khộng tạo constructor mặc định nếu bạn cố gắng khai báo kiểu contructor mặc định thì sẽ bị báo lỗi, để khắc phục nó thì bạn chỉ cần tạo constructor mặc định là được. (Constructor mặc định là constructor không có tham số nhé).
class ConNguoi { int tuoi; public ConNguoi() { } public ConNguoi(int tuoi) { this.tuoi = tuoi; } }
Khi không khai báo phạm vi truy xuất, được hiểu là giá trị thấp nhất. Tức là biến tuoi ở trạng thái private.
Ví dụ:
if(true) { HocSinh hs = new HocSinh(); } //hs bị hủy sẽ gọi Destructor
Cú Pháp:
class ConNguoi { int tuoi; public ~ConNguoi() { } }
using System; /* main */ public class Program { public static void Main() { Date ngaySinh = new Date(1, 9, 1999); Date ngayVaoLam = new Date(08, 4, 2020); Employee nv = new Employee("Do", "Hao", ngaySinh, ngayVaoLam); nv.show(); } } /* Lop Date */ public class Date { private int day; private int month; private int year; public void setDay(int day) { this.day = day; } public void setMonth(int month) { this.month = month; } public void setYear(int year) { this.year = year; } public int getDay() { return day; } public int getMonth() { return month; } public int getYear() { return year; } public Date(int day, int month, int year) { this.day = day; this.month = month; this.year = year; } public Date() { this.day = 1; this.month = 1; this.year = 1900; } public void show() { Console.Write(day + "/" + month + "/" + year); } public bool hopLe() { if( !validateDay() ) { Console.Write("Loi ngay"); return false; } if( !validateMonth() ) { Console.Write("Loi thang"); return false; } if( !validateYear() ) { Console.Write("Loi nam"); return false; } return true; } public bool validateDay() { if( day<1 || day>31 ) return false; return true; } public bool validateMonth() { if( month<1 || month>12 ) return false; return true; } public bool validateYear() { if( year<1900 ) return false; return true; } } /* Lop Employee*/ public class Employee { private String ho; private String ten; private Date birthday = new Date(); private Date ngayVaoLam = new Date(); public Employee() { } public Employee(String ho, String ten, Date birthday, Date ngayVaoLam) { this.ho = ho; this.ten = ten; this.birthday = birthday; this.ngayVaoLam = ngayVaoLam; } public void show() { Console.WriteLine("Ho: " + ho); Console.WriteLine("Ten: " + ten); Console.Write("Ngay sinh: " ); birthday.show(); Console.WriteLine(); Console.Write("Ngay vao lam: " ); ngayVaoLam.show(); } }
this.Close();
TabIndex là thuộc tính nhận thứ tự của control khi nhấn phím Tab.
Bước 1: View ->TabOrder
Step 2 Click vào mỗi control để thay đổi
ColumnHeader col1 = newe ColumnHeader(); col1.Text = "Ten Cot"; listviewName.Column.Add(col1);
Link hướng dẫn: https://tuandc.com/lap-trinh/goi-du-lieu-tu-datagridview-va-listview-len-textbox-khi-click-dong-trong-c.html
Thuộc tính:
Sự kiện: cellClick
String sql = "SELECT maSinhVien as 'Mã Sinh Viên', tenSinhVien as 'Tên Sinh Viên' FROM sinhvien"; DataTable bangSinhVien = new DataTable(); bangSinhVien = csdl.LayBang(sql); dgvSinhVien.DataSource = bangSinhVien; //lấy giá trị cột nhất định int index = e.RowIndex; txtMaSV.Text = dgv.Rows[index].Cells[0].Value.ToString(); txtTenSV.Text = dgv.Rows[index].Cells[1].Value.ToString(); string giaTri = dgv.Rows[index].Cells[2].Value.ToString(); //lưu ý cần bỏ giá trị index = -1 vì đó là tiêu đề cột if(index != -1) { //code } //Khi truy vấn csdl sử dụng as để hiển thị tiếng việt
Điều khiển DateTimePicker có 2 phần (hình trên), phần thứ nhất là 1 Label để hiển thị ngày tháng đã lựa chọn, và phần thứ 2 là 01 bảng lịch dưới dạng Popup cho phép người dùng lựa chọn ngày tháng. Thuộc tính quan trọng nhất của điều khiển DateTimePicker đó là thuộc tính Value, nó cho phép lưu trữ thông tin về ngày tháng đã được người sử dụng lựa chọn. Chúng ta có thể gán giá trị cho thuộc tính Value trong khi chạy ứng dụng như sau:
dateTimePicker1.Value = DateTime.Today;
Để lưu lại giá trị của thuộc tính Value của điều khiển DateTimePicker , chúng ta sử dụng biến đối tượng DateTime, như dưới đây.
DateTime iDate; iDate = dateTimePicker1.Value;
Điều khiển DateTimePicker có một vài lựa chọn kiểu hiển thị ngày tháng, cụ thể gồm có 4 định dạng hiển thị gồm các kiểu: Long, Short, Time, hoặc dạng Custom, chúng ta có thể thay đổi kiểu hiển thị như sau:
dateTimePicker1.Format = DateTimePickerFormat.Short;
Nguồn: https://csharpcanban.com/huong-dan-su-dung-datetimepicker.html
Về kiểu dữ liệu DateTime, bạn tham khảo bài viết: https://o7planning.org/vi/10457/huong-dan-su-dung-date-time-trong-csharp
Thư viện kết nối csdl của thầy Việt: https://github.com/tronghao
Bước 1: Nhấn tổ hợp phím Windows +R
Bước 2: Gõ services.msc
Bước 3: Click phải chuột vào dòng SQL Server (MSSQLSERVER) sau đó chọn start
Bước 4: Click phải chuột vào dòng SQL Server VSS Writer sau đó chọn restart
Video hướng dẫn
Snippet giups chúng ta code nhanh hơn với vài kí tự ngắn.
Các code của tôi đã tạo snippet. Link download: https://drive.google.com
Sau khi tải bạn vào visual studio => TOOLS => Code Snippets Manager => Language (chọn C#) => My Code Snippets. Bạn giải nén file lúc nãy ra copy toàn bộ file vào đường dẫn tại mục Location.
//form cha vẫn thao tác được xu_ly_them frmThem = new xu_ly_them(); frmThem.Show(); //khóa form cha khi form con hiển thị xu_ly_them frmThem = new xu_ly_them(); frmThem.ShowDialog(); //hiện form con ẩn form cha //lưu ý visible form cha phải thực hiện trước khi form con hiển thị xu_ly_them frmThem = new xu_ly_them(); this.Visible = false; frmThem.ShowDialog(); this.Visible = true;
DateTime.Now.Year
DialogForm: có 1 TextBox (id: txtValue) và 2 button OK, Cancel
Đối với button OK, bạn set thuộc tính DialogResult là OK và tương tự, button Cancel có thuộc tính DialogResult là Cancel
DialogForm frm = new DialogForm(); //Gán giá trị cho biến textValue trong DialogForm frm.textValue = txtValue.Text; //Nếu sau khi bạn ấn nút OK trên DialogForm if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //Gán giá trị textValue trong DialogForm cho textbox txtValue trong MainForm txtValue.Text = frm.textValue; }
//ArrayList //Khai báo ArrayList dsKhachhang = new ArrayList(); //duyệt for (int i=0; i< dsKhachhang.Count; i++) { } //Thêm dsKhachhang.Add(kh); //Xóa dsKhachhang.RemoveAt(index); dsKhachhang.Clear(); //Xóa hết //ListBox //xóa lbKhachHang.Items.Clear(); //xóa tất cả lbKhachHang.Items.RemoveAt(index); //thêm lbKhachHang.Items.Add(kh.hoten); //Lấy vị trí được chọn lbKhachHang.SelectedIndex; //Kết hợp ListBox và ArrayList KhachHang kh= new KhachHang(); lbKhachHang.Items.Clear(); for (int i=0; i< dsKhachhang.Count; i++) { kh= (KhachHang)dsKhachhang[i]; lbKhachHang.Items.Add(kh.hoten); }
//Viet trong ham KeyDownEvent switch (e.KeyValue) { case 48: btn0_Click(sender, e); break; case 108: btnBang_Click(sender, e); break; }
ArrayList sử dụng như phần 6.5 nha!
Combobox có hai phần quan trọng là: DisplayMember (phần hiển thị) và ValueMember (phần dữ liệu của item). À muốn hiển thị không cho người ta nhập thì dùng thuộc tính dropdownstyle: dropdownlist nhé!
COMBOBOX //thêm một item cmb.Items.Add((sinhvien)ds[i]); //xóa //xóa tất cả cmb.Items.Clear(); //(cái này sử dụng cho class) //xóa một phần tử Xóa trong ArrayList rồi cập nhật lại cho combobox //Hiển thị giá trị của trường nào cmb.DisplayMember = "maSo"; //lấy vị trí được chọn int index = cmb.SelectedIndex; //text hiển thị cmb.Text = ""; //ví dụ DataTable bangsinhvien = new DataTable(); sql = "select * from lop"; bangsinhvien = csdl.LayBang(sql); cbTenLop.DataSource = bangsinhvien; cbTenLop.DisplayMember = "ten_lop"; cbTenLop.ValueMember = "ma_lop"; //lấy dữ liệu int index = cbTenLop.SelectedIndex; String maLop = cbTenLop.SelectedValue.ToString(); //chọn dữ liệu để hiển thị lên combobox string giaTri = dgv.Rows[index].Cells[2].Value.ToString(); cbTenLop.SelectedIndex = cbTenLop.FindStringExact(giaTri); //giaTri là giá trị của displayMember
/* Ví dụ: DataTable có dữ liệu như sau: ma_nganh tennganh 110 Cong Nghe Thong Tin 111 Ke Toan */ //Để lấy dữ liệu dòng 110: tenDataTable.Rows[0][0] //kết quả 110 tenDataTable.Rows[0][1] //kết quả Cong Nghe Thong Tin //Để lấy dữ liệu dòng 111: tenDataTable.Rows[1][0] //kết quả 111 tenDataTable.Rows[1][1] //kết quả Ke Toan //Lưu ý: nên sử dụng toString() để sử dụng dữ liệu tenDataTable.Rows[1][0].toString() //Cách khác tenDataTable.Rows[1].<Kiểu dữ liệu>ten_cot_trong_csdl
private void textBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) //thay thành Left - Right - Middle { //code } }
Mã ascii của bảng chữ cái, bàn phím Enter, Space, ESC, mũi tên
Khi học lập trình C hoặc C++ Chắc hẳn các bạn sẽ được làm quen với bảng mã ASCII các ký tự chữ số và bàn phím để nhận biết khi sử dụng một số thao tác như nhập tới khi nhấn Enter hoặc phím nào đó. một số mã ASCII thường gặp là:
Các kỹ tự, chữ cáiHệ 10(Thập phân)Hệ 2(Nhị phân)Hệ 16(Thập lục phân)[Khoảng trắng]32010 000020!33010 000121“34010 001022#35010 001123$36010 010024%37010 010125&38010 011026‘39010 011127(40010 100028)41010 100129*42010 10102A+43010 10112B,44010 11002C–45010 11012D.46010 11102E/47010 11112F048011 000030149011 000131250011 001032351011 001133452011 010034553011 010135654011 011036755011 011137856011 100038957011 100139:58011 10103A;59011 10113B<60011 11003C=61011 11013D>62011 11103E?63011 11113F@64100 000040A65100 000141B66100 001042C67100 001143D68100 010044E69100 010145F70100 011046G71100 011147H72100 100048I73100 100149J74100 10104AK75100 10114BL76100 11004CM77100 11014DN78100 11104EO79100 11114FP80101 000050Q81101 000151R82101 001052S83101 001153T84101 010054U85101 010155V86101 011056W87101 011157X88101 100058Y89101 100159Z90101 10105A[91101 10115B\92101 11005C]93101 11015D^94101 11105E_95101 11115F`96110 000060a97110 000161b98110 001062c99110 001163d100110 010064e101110 010165f102110 011066g103110 011167h104110 100068i105110 100169j106110 10106Ak107110 10116Bl108110 11006Cm109110 11016Dn110110 11106Eo111110 11116Fp112111 000070q113111 000171r114111 001072s115111 001173t116111 010074u117111 010175v118111 011076w119111 011177x120111 100078y121111 100179z122111 10107A{123111 10117B|124111 11007C}125111 11017D~126111 11107E
Mã ASCII của bàn phím:
Phím
Mã ASCII
– (keypad)
109
. (keypad)
110
/ (keypad)
111
F1
112
F2
113
F3
114
F4
115
F5
116
F6
117
F7
118
F8
119
F9
120
F10
121
F11
122
F12
123
F13
124
F14
125
F15
126
Back space
8
Tab
9
Clear
12
Enter
13
Shift
16
Ctrl
17
Alt
18
Caps lock
20
Esc
27
Space bar
32
Page up
33
Page down
34
End
35
Home
36
Left arrow
37
Up arrow
38
Right arrow
39
Down arrow
40
Insert
45
Delete
46
Help
47
Num lock
144
; :
186