Mở đầu
Chắc hẳn là ở đây những bạn nào mới học lập trình thậm chí là đang học lập trình, ai cũng phải trải qua bài toán viết chương trình tính tổng 2 số nguyên bằng ngôn ngữ lập trình đó. Nhưng đối với những bạn mới học lập trình C#, đặc biệt là C# Winforms thì hôm nay tỏng bài viết này minh sẽ cùng các bạn đi làm bài toán kinh điển trên bằng C# Winforms nhé.
Tính tổng 2 số nguyên trong C# Winforms
Để làm được bài toán này bằng C# Winforms thì các bạn nên có cho mình các kiến thức cơ bản sau đây:
- Label, Button, Textbox, MessageBox widget trong C# Winforms
- Ép kiểu trong C#
Đó là các kiến thức cơ bản mà bạn nên nắm được trước khi tiến hành giải bài toán trên và sau đây là các bước tiền hành để có thể giải được bài toán này.
Tạo project C# Winforms trong Visual Studio 2019
Để có thể tạo được project C# Winforms trong Visual Studio 2019 các bạn làm theo các bước sau đây:
Bước 1:Bắt đầu tạo project.
Các bạn mở Visual Studio 2019 lên và chọn Create a new project.
Bước 2: Chọn loại project bạn muốn tạo.
Các bạn chọn Windows Form App (.NET Framework) như trong hình sau đó chọn Next:
Bước 3: Tiến hành tạo project.
Các bạn nhập tên project của bạn vào ô Project name là tên project bạn tạo, còn ở Location thì các bạn chọn nơi mà bạn muốn để project của bạn nhé
Sau đó các bạn chọn Create.
Bước 4: Tạo form và design form.
Bạn dùng kéo thả, để kéo các widget từ hộp thoại Toolbox vào để tạo nên Form mà bạn mong muốn, ở đây mình đã design ra một Form đơn giản như này:
Nếu như các bạn muốn một form giống mình thì có thể tham khảo đoạn code trong region
Windows Form Designer generated code:
#region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.lbA = new System.Windows.Forms.Label(); this.lbB = new System.Windows.Forms.Label(); this.txtbA = new System.Windows.Forms.TextBox(); this.txtbB = new System.Windows.Forms.TextBox(); this.btnSubmit = new System.Windows.Forms.Button(); this.SuspendLayout(); // // lbA // this.lbA.AutoSize = true; this.lbA.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F); this.lbA.Location = new System.Drawing.Point(12, 9); this.lbA.Name = "lbA"; this.lbA.Size = new System.Drawing.Size(87, 16); this.lbA.TabIndex = 0; this.lbA.Text = "Số nguyên A:"; // // lbB // this.lbB.AutoSize = true; this.lbB.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F); this.lbB.Location = new System.Drawing.Point(12, 42); this.lbB.Name = "lbB"; this.lbB.Size = new System.Drawing.Size(87, 16); this.lbB.TabIndex = 0; this.lbB.Text = "Số nguyên B:"; // // txtbA // this.txtbA.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F); this.txtbA.Location = new System.Drawing.Point(105, 6); this.txtbA.Name = "txtbA"; this.txtbA.Size = new System.Drawing.Size(276, 22); this.txtbA.TabIndex = 1; // // txtbB // this.txtbB.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F); this.txtbB.Location = new System.Drawing.Point(105, 39); this.txtbB.Name = "txtbB"; this.txtbB.Size = new System.Drawing.Size(276, 22); this.txtbB.TabIndex = 1; // // btnSubmit // this.btnSubmit.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F); this.btnSubmit.Location = new System.Drawing.Point(263, 67); this.btnSubmit.Name = "btnSubmit"; this.btnSubmit.Size = new System.Drawing.Size(118, 40); this.btnSubmit.TabIndex = 2; this.btnSubmit.Text = "Tính A + B"; this.btnSubmit.UseVisualStyleBackColor = true; // // frm1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(396, 122); this.Controls.Add(this.btnSubmit); this.Controls.Add(this.txtbB); this.Controls.Add(this.txtbA); this.Controls.Add(this.lbB); this.Controls.Add(this.lbA); this.Name = "frm1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "LTKK A Plus B"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Label lbA; private System.Windows.Forms.Label lbB; private System.Windows.Forms.TextBox txtbA; private System.Windows.Forms.TextBox txtbB; private System.Windows.Forms.Button btnSubmit;
Lưu ý: mình không khuyến khích bạn copy code, bạn hãy nên design ra form của mình.
Bước 5: Tạo event cho button.
Bạn click 2 lần vào button (trong designer) để Visual Studio sẽ tự động generate ra cho bạn một đoạn code là event click của button đó (như trong hình).
Bước 6: Xử lý tính toán sau khi người dùng ấn vào button.
Ở bước này chúng ta xử lý làm sao để có thể tính được tổng 2 số nguyên khi được nhập từ 2 ô Số nguyên A và Số nguyên B.
Đầu tiên, chúng ta phải lấy ra được dữ liệu của người dùng nhập vào từ 2 Textbox. Để làm được điều này chúng ta sử dụng một property đã có sẵn trong lớp Textbox là Text
, property này sẽ trả về cho chúng ta một giá trị kiểu string
:
string data_textbox_a = txtbA.Text; // lấy dữ liệu từ Textbox A string data_textbox_b = txtbB.Text; // lấy dữ liệu từ Textbox B
Lưu ý: txtbA
và txtbB
là tên biến Textbox của bạn, bạn có thể đặt tên này tùy ý, có thể không giống trong ví dụ nhưng phải tuân thủ đúng quy tắc đặt tên.
Sau khi chúng ta đã lấy ra được dữ liệu nhập vào từ 2 Textbox thì chúng ta phải thực hiện ép kiểu về dạng số nguyên, nếu không ép kiểu khi thực hiện phép toán cộng sẽ cho ra một chuỗi ghép lại từ 2 số nguyên đó.
Chúng ta sử dụng phương thức Parse
có trong lớp Int32
để tiến hành ép kiểu như sau:
int a = Int32.Parse(data_textbox_a); // ép kiểu dữ liệu lấy được từ Textbox A thành kiểu số nguyên int b = Int32.Parse(data_textbox_b); // ép kiểu dữ liệu lấy được từ Textbox B thành kiểu số nguyên
Tiếp theo, sau khi chúng ta đã có thể ép kiểu dữ liệu thành kiểu số nguyên ở đây ta dùng một biến result
để lưu lại kết quả phép tính:
int result = a + b; // dùng biến result lưu trữ kết quả phép tính
Để có thể hiện thị kết quả ra màn hình chúng ta làm cho nó hiển thị ra một hộp thông báo nhỏ là kết quả của phép toán.
MessageBox.Show("Kết quả của phép toán " + result.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
Như vậy là mọi thứ đã xong xuôi hết rồi. Nhưng lại có một vấn đề đặt ra là, trong trường hợp mà người dùng ấn button tính phép tính khi mà chưa điền vào 1 trong 2 ô Textbox thì chương trình lúc này khi tính sẽ xảy ra lỗi vì property Text
của Textbox sẽ trả về một chuỗi rỗng và sẽ không thể ép sang kiểu số nguyên. Vậy nên sau khi lấy dữ liệu từ 2 ô Textbox ta sử dụng thêm một câu lệnh logic để kiểm soát vấn đề trên nếu như mà 1 trong 2 ô Textbox trống thì ta hiện lên một thông báo để thông báo người dùng nhập lại còn ngược lại chương trình diễn ra bình thường:
if (data_textbox_a.Length == 0 || data_textbox_b.Length == 0) { MessageBox.Show("Vui lòng điền đủ cả 2 ô số nguyên A và B để có thể thực hiện phép tính.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); }
Chung quy lại ta có đoạn code trong hàm event click của button Tính A + B như sau:
private void btnSubmit_Click(object sender, EventArgs e) { string data_textbox_a = txtbA.Text; // lấy dữ liệu từ Textbox A string data_textbox_b = txtbB.Text; // lấy dữ liệu từ Textbox B if (data_textbox_a.Length == 0 || data_textbox_b.Length == 0) { MessageBox.Show("Vui lòng điền đủ cả 2 ô số nguyên A và B để có thể thực hiện phép tính.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { int a = Int32.Parse(data_textbox_a); // ép kiểu dữ liệu lấy được từ Textbox A thành kiểu số nguyên int b = Int32.Parse(data_textbox_b); // ép kiểu dữ liệu lấy được từ Textbox B thành kiểu số nguyên int result = a + b; // dùng biến result lưu trữ kết quả phép tính MessageBox.Show("Kết quả của phép toán " + result.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
Bước 7: Chạy thử chương trình.
Lúc này chúng ta ấn phím F5 hoặc Start để chạy chương trình:
Như bạn có thể thấy, trong trường hợp chúng ta nhập đủ cả 2 ô thì chương trình cho ra kết quả chính xác.
Chúng ta thấy trong trường hợp mà người dùng bỏ quên nhập số nguyên vào một trong 2 ô thì chương trình của chúng ta vẫn hoạt động chính xác.
Tổng kết
Và như vậy là thông qua bài viết này mình mong là bạn có thể giải quyết được bài toán đơn giản này bằng C# Winforms, code project trong bài viết này có thể được download tại đường link (https://github.com/iwannabetheguy710/LTKK-A-Plus-B). Cảm ơn các bạn đã đọc bài viết. Hãy ủng hộ Lập trình không khó trong các bài viết tiếp theo nhé !
Để lại một bình luận