Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Những điều cơ bản về winform C#

28 Tháng Chín, 2020 by admin
Lượt xem: 156

Những điều cơ bản về winform C#

Contents

  • 1. Tổng quan C#
  • 2. Hướng đối tượng
    • 2.1 Phương thức nạp chồng Overloading
    • 2.2 Lớp trừu tượng
    • 2.3 Get – Set
    • 2.4 Contructor
    • 2.5 Destructor
    • 2.6 Bài tập hướng đối tượng
  • 3. Cơ bản về winform
    • 3.1 Đóng Form
    • 3.2 Readonly
    • 3.3 TabIndex
    • 3.4 Enable: thấy nhưng không thao tác được
    • 3.5 Visible: Không thấy hiện ra luôn
    • 3.6 Anchor: neo theo form
    • 3.7 Text-box
    • 3.8 Button
    • 3.9 ListBox & Combobox
    • 3.10 ListView
    • 3.11 Data Grid View
    • 3.12 DateTimePicker
  • 4. Kết nối CSDL
    • 4.1 Sửa lỗi không thể kết nối SQL Server
  • 5. Các mẹo khi sử dụng
    • 5.1 Snippet
  • 6. Kinh nghiệm
    • 6.1 Show form con từ form cha
    • 6.2 Lấy năm hiện tại
    • 6.3 Truyền giá trị giữa các form trong C# bằng thuộc tính DialogResult
    • 6.4 Public cho đối tượng(textbox,…)
    • 6.5 Sử dụng ArrayList và ListBox
    • 6.6 Xử lý bắt phím
    • 6.7 Combobox và ArrayList
    • 6.8 DataTable
    • 6.9 Bắt sự kiện click chuột trái – phải – giữa
  • 7. Mã ASCII

1. Tổng quan C#

2. Hướng đối tượng

2.1 Phương thức nạp chồng Overloading

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.

  • ref int a
  • out int b

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() {}

2.2 Lớp trừu tượng

abstract class ConNguoi {
     public abstract string tinhTuoi();
}

2.3 Get – Set

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

2.4 Contructor

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.

2.5 Destructor

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() { }
}

2.6 Bài tập hướng đối tượng

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();
	}
}

3. Cơ bản về winform

3.1 Đóng Form

this.Close();

3.2 Readonly

  • Const
  • define

3.3 TabIndex

TabIndex là thuộc tính nhận thứ tự của control khi nhấn phím Tab.

Bước 1: View ->TabOrder
 
 TabIndex trong winform C#
 
 Step 2 Click vào mỗi control để thay đổi
 
cơ bản về winform C#

3.4 Enable: thấy nhưng không thao tác được

enable trong winform C#

3.5 Visible: Không thấy hiện ra luôn

3.6 Anchor: neo theo form

anchor trong winform C#

3.7 Text-box

text-box trong winform C#

  • Password: sử dụng thuộc tính PasswordChar (các kí tự nhập vào biến thành dấu *)winform C#
    pasword text-box
  • Hiện nhiều dòng để nhập: sử dụng thuộc tính Multiple và nhớ thêm ScrollBar
    multiple password text-box
  • Sự kiện: TextChanged
    TextChanged trong text-box C#

3.8 Button

button trong winform C#

3.9 ListBox & Combobox

ListBox và Combobox trong winform C#

  • Lấy dữ liệu được chọn:
    tenCB.Items[vi_tri].tostring();
    hoặc tenCB.Items.IndexOf(vi_tri);
  • Thêm dữ liệu:
    tenCB.Items.Add();
  • Xóa dữ liệu:
    tenCB.Items.RemoveAt(vi_tri);
  • DropDownStyle
  • DisplayMembers
  • ValueMember
  • DataSource: nguồn của CSDL

3.10 ListView

ColumnHeader col1 = newe ColumnHeader();
col1.Text = "Ten Cot";
listviewName.Column.Add(col1);

3.11 Data Grid View

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:

  • ReadOnly
  • AutoSizeColumnMode : Fill (để nội dung full width của dataGridView)

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

3.12 DateTimePicker

C# datetimepicker

Đ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

4. Kết nối CSDL

Thư viện kết nối csdl của thầy Việt: https://github.com/tronghao

4.1 Sửa lỗi không thể kết nối SQL Server

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

5. Các mẹo khi sử dụng

  1. Ctrl + F4: đóng toàn bộ các tab làm việc trên visual studio.

5.1 Snippet

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.

6. Kinh nghiệm

6.1 Show form con từ form cha

//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;

6.2 Lấy năm hiện tại

DateTime.Now.Year

6.3 Truyền giá trị giữa các form trong C# bằng thuộc tính DialogResult

DialogForm: có 1 TextBox (id: txtValue) và 2 button OK, Cancel

Truyền giá trị giữa các form (2)Đố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

DialogResult-OK

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;
}

6.4 Public cho đối tượng(textbox,…)

6.5 Sử dụng ArrayList và ListBox

//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);
}

6.6 Xử lý bắt phím

//Viet trong ham KeyDownEvent 
switch (e.KeyValue)
 {
   case 48:
     btn0_Click(sender, e);
     break;
   case 108:
     btnBang_Click(sender, e);
     break;
 }

6.7 Combobox và ArrayList

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

6.8 DataTable

/*
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

6.9 Bắt sự kiện click chuột trái – phải – giữa

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{           
  if (e.Button == MouseButtons.Right) //thay thành Left - Right - Middle
  {
    //code
  }
}

7. Mã ASCII

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à:

  • Phím Enter: 13
  • Phím Space: 32
  • Phím Xóa ngược(BackSpace) <–: 8
  • Phím ESC: 27
  • Tab: 9
  • CTRL: 17
Các kỹ tự, chữ cái Hệ 10(Thập phân) Hệ 2(Nhị phân) Hệ 16(Thập lục phân)
[Khoảng trắng] 32 010 0000 20
! 33 010 0001 21
“ 34 010 0010 22
# 35 010 0011 23
$ 36 010 0100 24
% 37 010 0101 25
& 38 010 0110 26
‘ 39 010 0111 27
( 40 010 1000 28
) 41 010 1001 29
* 42 010 1010 2A
+ 43 010 1011 2B
, 44 010 1100 2C
– 45 010 1101 2D
. 46 010 1110 2E
/ 47 010 1111 2F
0 48 011 0000 30
1 49 011 0001 31
2 50 011 0010 32
3 51 011 0011 33
4 52 011 0100 34
5 53 011 0101 35
6 54 011 0110 36
7 55 011 0111 37
8 56 011 1000 38
9 57 011 1001 39
: 58 011 1010 3A
; 59 011 1011 3B
< 60 011 1100 3C
= 61 011 1101 3D
> 62 011 1110 3E
? 63 011 1111 3F
@ 64 100 0000 40
A 65 100 0001 41
B 66 100 0010 42
C 67 100 0011 43
D 68 100 0100 44
E 69 100 0101 45
F 70 100 0110 46
G 71 100 0111 47
H 72 100 1000 48
I 73 100 1001 49
J 74 100 1010 4A
K 75 100 1011 4B
L 76 100 1100 4C
M 77 100 1101 4D
N 78 100 1110 4E
O 79 100 1111 4F
P 80 101 0000 50
Q 81 101 0001 51
R 82 101 0010 52
S 83 101 0011 53
T 84 101 0100 54
U 85 101 0101 55
V 86 101 0110 56
W 87 101 0111 57
X 88 101 1000 58
Y 89 101 1001 59
Z 90 101 1010 5A
[ 91 101 1011 5B
\ 92 101 1100 5C
] 93 101 1101 5D
^ 94 101 1110 5E
_ 95 101 1111 5F
` 96 110 0000 60
a 97 110 0001 61
b 98 110 0010 62
c 99 110 0011 63
d 100 110 0100 64
e 101 110 0101 65
f 102 110 0110 66
g 103 110 0111 67
h 104 110 1000 68
i 105 110 1001 69
j 106 110 1010 6A
k 107 110 1011 6B
l 108 110 1100 6C
m 109 110 1101 6D
n 110 110 1110 6E
o 111 110 1111 6F
p 112 111 0000 70
q 113 111 0001 71
r 114 111 0010 72
s 115 111 0011 73
t 116 111 0100 74
u 117 111 0101 75
v 118 111 0110 76
w 119 111 0111 77
x 120 111 1000 78
y 121 111 1001 79
z 122 111 1010 7A
{ 123 111 1011 7B
| 124 111 1100 7C
} 125 111 1101 7D
~ 126 111 1110 7E

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

Nguồn: https://vforum.vn/diendan/showthread.php?74832-Ma-ASCII-cua-bang-chu-cai-ban-phim-Enter-Space-ESC-mui-ten

No related posts.

Post navigation

Previous Post:

Ngôn ngữ lập trình prolog

Next Post:

Phân tích Project Website nghe nhạc làm từ Laravel của Sharecode.vn

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074488
Visit Today : 84
Visit Yesterday : 178
This Month : 759
Who's Online : 7
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes