Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Làm đúng cách tạo event nhưng lại bị một lỗi cơ bản

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    5

    Mặc định Làm đúng cách tạo event nhưng lại bị một lỗi cơ bản

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Calc
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Label lblSoThuNhat = new Label();
                lblSoThuNhat.Location = new Point(50, 70);
                lblSoThuNhat.Text = "Số thứ nhất ";
                lblSoThuNhat.Width = 70;
                lblSoThuNhat.Height = 30;
                Controls.Add(lblSoThuNhat);
                Label lblSoThuHai = new Label();
                lblSoThuHai.Location = new Point(50, 100);
                lblSoThuHai.Text = "Số thứ hai ";
                lblSoThuHai.Width = 70;
                lblSoThuHai.Height = 30;
                Controls.Add(lblSoThuHai);
                Label lblKetQua = new Label();
                lblKetQua.Location = new Point(50, 130);
                lblKetQua.Text = "Kết quả ";
                lblKetQua.Width = 70;
                lblKetQua.Height = 30;
                Controls.Add(lblKetQua);
                TextBox txtSoThuNhat = new TextBox();
                txtSoThuNhat.Location = new Point(120, 70);
                Controls.Add(txtSoThuNhat);
                TextBox txtSoThuHai = new TextBox();
                txtSoThuHai.Location = new Point(120, 100);
                Controls.Add(txtSoThuHai);
                TextBox txtKetQua = new TextBox();
                txtKetQua.Location = new Point(120, 130);
                Controls.Add(txtKetQua);
                Button btnCong = new Button();
                btnCong.Location = new Point(60, 170);
                btnCong.Text = "+";
                btnCong.Width = 25;
                btnCong.Height = 25;
                Controls.Add(btnCong);
                Button btnTru = new Button();
                btnTru.Location = new Point(100, 170);
                btnTru.Text = "-";
                btnTru.Width = 25;
                btnTru.Height = 25;
                Controls.Add(btnTru);
                Button btnNhan = new Button();
                btnNhan.Location = new Point(140, 170);
                btnNhan.Text = "*";
                btnNhan.Width = 25;
                btnNhan.Height = 25;
                Controls.Add(btnNhan);
                Button btnChia = new Button();
                btnChia.Location = new Point(180, 170);
                btnChia.Text = "/";
                btnChia.Width = 25;
                btnChia.Height = 25;
                Controls.Add(btnChia);
                btnCong.Click += new EventHandler(btnCong_Click);
            }
    
            void btnCong_Click(object sender, System.EventArgs e)
            {
                double kq = double.Parse(txtSoThuNhat.Text) +
                double.Parse(txtSoThuHai.Text);
                txtKetQua.Text = kq.ToString();
            }
        }
    }
    Mình đang học CforWin.
    Mình thử tạo một event click như trên thì nó không nhận ra các controls mình đã tạo trong form_load.
    Mình hiểu mấy cái controls đó là local nên không dùng trong hàm khác được. Giờ mình chẳng biết làm thế nào nữa. Mà nếu dùng kéo thả controls thì lại không đúng vì môn này bắt phải viết code bằng từ đầu đến cuối.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Bạn học CforWin nhưng đây là C# mà hàm InitializeComponent();của bạn ở đâu?hàm form load làm gì bạn biết ko?bạn đã học OOP chưa? biết constructor chứ
    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    8

    Khai báo các controls ở phạm vi private.
    BTC

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    c# thì chỉ có kéo thả là chuẩn tắc , code làm gì cho khổ , như vẽ paint ấy ,event cũng vậy , click vào rồi gõ code cho event thôi . Về đọc các thao tác kéo thả đi nhé
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Khai báo thế nào?khởi tạo các control ra sao?bạn bảo code thủ công mà mình thấy như là bạn copy từ code của VS làm quá .
    Vào http://java2s.com/ tham khảo các code winform mà họ tự code,ko dùng VS
    @ tien : tự code để hiểu ngôn ngữ cũng tốt mỗi tội hơi vất
    Cánh Chym ứ mỏi

  6. #6
    Ngày gia nhập
    07 2007
    Bài viết
    41

    Mặc định Làm đúng cách tạo event nhưng lại bị một lỗi cơ bản

    Code của bạn có lỗi, bạn clean project đi rồi build lại sẽ thấy lỗi.

    Trong hàm btnCong_Click bạn sử dụng các biến txtSoThuNhat txtSoThuHai txtKetQua, nhưng các biến này bạn chỉ khai báo cục bộ trong hàm Form_Load.

    Ngoài ra nếu định code bằng tay thì nên bỏ luôn cái hàm InitializeComponent đi, về sự kiện form load thì có thể override lại hàm OnLoad. hoặc tự đăng ký luôn trong constructor.

    Visual C# Code:
    1. // main2.cs created with MonoDevelop
    2. // User: nanhtrang at 10:31 AM 1/16/2009
    3. //
    4. // To change standard headers go to Edit->Preferences->Coding->Standard Headers
    5. //
    6.  
    7. using System;
    8. using System.Collections.Generic;
    9. using System.ComponentModel;
    10. using System.Data;
    11. using System.Drawing;
    12. using System.Text;
    13. using System.Windows.Forms;
    14.  
    15. {
    16.     public partial class Form1 : Form
    17.     {
    18.         static void Main() {
    19.             Application.Run(new Form1());
    20.         }
    21.        
    22.         TextBox txtSoThuNhat;
    23.         TextBox txtSoThuHai;
    24.         TextBox txtKetQua;
    25.        
    26.         public Form1()
    27.         {
    28.             //InitializeComponent();
    29.         }
    30.  
    31.         protected override void OnLoad (EventArgs e)
    32.         {
    33.             Label lblSoThuNhat = new Label();
    34.             lblSoThuNhat.Location = new Point(50, 70);
    35.             lblSoThuNhat.Text = "Số thứ nhất ";
    36.             lblSoThuNhat.Width = 70;
    37.             lblSoThuNhat.Height = 30;
    38.             Controls.Add(lblSoThuNhat);
    39.             Label lblSoThuHai = new Label();
    40.             lblSoThuHai.Location = new Point(50, 100);
    41.             lblSoThuHai.Text = "Số thứ hai ";
    42.             lblSoThuHai.Width = 70;
    43.             lblSoThuHai.Height = 30;
    44.             Controls.Add(lblSoThuHai);
    45.             Label lblKetQua = new Label();
    46.             lblKetQua.Location = new Point(50, 130);
    47.             lblKetQua.Text = "Kết quả ";
    48.             lblKetQua.Width = 70;
    49.             lblKetQua.Height = 30;
    50.             Controls.Add(lblKetQua);
    51.             txtSoThuNhat = new TextBox();
    52.             txtSoThuNhat.Location = new Point(120, 70);
    53.             Controls.Add(txtSoThuNhat);
    54.             txtSoThuHai = new TextBox();
    55.             txtSoThuHai.Location = new Point(120, 100);
    56.             Controls.Add(txtSoThuHai);
    57.             txtKetQua = new TextBox();
    58.             txtKetQua.Location = new Point(120, 130);
    59.             Controls.Add(txtKetQua);
    60.             Button btnCong = new Button();
    61.             btnCong.Location = new Point(60, 170);
    62.             btnCong.Text = "+";
    63.             btnCong.Width = 25;
    64.             btnCong.Height = 25;
    65.             Controls.Add(btnCong);
    66.             Button btnTru = new Button();
    67.             btnTru.Location = new Point(100, 170);
    68.             btnTru.Text = "-";
    69.             btnTru.Width = 25;
    70.             btnTru.Height = 25;
    71.             Controls.Add(btnTru);
    72.             Button btnNhan = new Button();
    73.             btnNhan.Location = new Point(140, 170);
    74.             btnNhan.Text = "*";
    75.             btnNhan.Width = 25;
    76.             btnNhan.Height = 25;
    77.             Controls.Add(btnNhan);
    78.             Button btnChia = new Button();
    79.             btnChia.Location = new Point(180, 170);
    80.             btnChia.Text = "/";
    81.             btnChia.Width = 25;
    82.             btnChia.Height = 25;
    83.             Controls.Add(btnChia);
    84.             btnCong.Click += new EventHandler(btnCong_Click);
    85.         }
    86.  
    87.         void btnCong_Click(object sender, System.EventArgs e)
    88.         {
    89.             double kq = double.Parse(txtSoThuNhat.Text) +
    90.             double.Parse(txtSoThuHai.Text);
    91.             txtKetQua.Text = kq.ToString();
    92.         }
    93.     }
    94. }

  7. #7
    Ngày gia nhập
    01 2007
    Bài viết
    5

    Cám ơn các bạn nhiều nhé !!!
    Đã hiểu ra toàn bộ vấn đề.

Các đề tài tương tự

  1. Mọi người xem giùm những điều mà mình hiểu về event sau có đúng hay không
    Gửi bởi vipzero trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 23-01-2013, 01:40 PM
  2. Công ty event, Công ty sự kiện, Cho thuê thiết bị event
    Gửi bởi VMHGroup trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 18-11-2011, 10:30 AM
  3. Công ty event, Công ty sự kiện, Cho thuê thiết bị event
    Gửi bởi VMHGroup trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 16-11-2011, 10:01 AM
  4. công ty event , công ty sự kiện, cho thuê thiết bị event
    Gửi bởi VMHGroup trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 01-11-2011, 08:57 AM
  5. công ty event, công ty sự kiện, cho thuê thiết bị event Phú Tinh
    Gửi bởi VMHGroup trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-10-2011, 10:22 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn