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

Đề tài: Thêm nhiều label vào panel bẳng code và cách gán sự kiện Click cho các label đó ?

  1. #1
    Ngày gia nhập
    09 2010
    Bài viết
    3

    Mặc định Thêm nhiều label vào panel bẳng code và cách gán sự kiện Click cho các label đó ?

    Trên form mình có 1 panel, trong SQL mình có 1 table có các sô 101, 102 , 103, 201 , 202 , ...
    mình đã add nhiều label theo table đó được rồi,nhưng mình muốn mỗi số ở đầu khác nhau thì label đó xuống hàng và vào đầu dòng trong panel, minh đã làm thử nhưng các số 201, 202..còn mỗi label 201. đây là code của mình.mình đang tập viết nên chưa rành lắm.
    Code:
    {            
                qlDataAdapter da = clsphong.LoadSoPhong();
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataRow dr;
                dr = dt.Rows[0];
                int i=0;
                foreach (DataRow row in dt.Rows )
                {
                Label lb = new Label();
                lb.Text = row["PhongID"].ToString().Trim();
                if (lb.Text.Substring(0, 1) == "1")
                    {
                    lb.Location = new Point(i * 80, 0);
                    }
                if (lb.Text.Substring(0, 1) == "2")
                    {
                        lb.Location = new Point(i * 80, 100);
                    }
                lb.Click += new EventHandler(lb_Click);
                lb.Height = 50;
                lb.Width = 50;
                lb.TextAlign = ContentAlignment.MiddleCenter;
                lb.BorderStyle = BorderStyle.FixedSingle;
                lb.Name = "lb;" + row["PhongID"].ToString();
                panel1.Controls.Add(lb);
                }
                i++;
            }

    à,minh muốn gán sự kiện click cho các label đó mà ko được,nhờ các bạn chỉ giúp. mình cám ơn nhiều.
    Đã được chỉnh sửa lần cuối bởi yunaken : 31-03-2012 lúc 09:08 PM.

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi. Bạn bỏ i ra ngoài Foreach thi lúc nào nó chẳng =0. Ra ngoài mới tăng thêm thì có nghĩa gì nữa. Bạn nhốt nó vào trong foreach là ổn. Vụ sư kiện mình nghĩ đâu vấn đề. Bạn làm riêng ra xem gán ổn chưa?
    p/s: Vấn đề kích thước Fix=i*80 ko hay lắm. Bạn lấy theo Size của nó ấy.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  3. #3
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    sự kiện click:
    Visual C# Code:
    1. public void lb_Click(object sender, EventArg e)
    2. {
    3.    // Lấy giá trị label đã click
    4.     Label lbtemp = (Label) sender;
    5.  
    6.   // tiếp theo làm j nữa thì tùy bạn
    7. }

  4. #4
    Ngày gia nhập
    09 2010
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi mrfour.it Xem bài viết
    hi. Bạn bỏ i ra ngoài Foreach thi lúc nào nó chẳng =0. Ra ngoài mới tăng thêm thì có nghĩa gì nữa. Bạn nhốt nó vào trong foreach là ổn. Vụ sư kiện mình nghĩ đâu vấn đề. Bạn làm riêng ra xem gán ổn chưa?
    p/s: Vấn đề kích thước Fix=i*80 ko hay lắm. Bạn lấy theo Size của nó ấy.
    ừ cám ơn bạn,mình bỏ i vào trong rồi nhưng đoạn này của mình không ổn
    Code:
    if (lb.Text.Substring(0, 1) == "2")
                    {
                        lb.Location = new Point(i * 80, 100);
                    }

    các label 201,202,... có xuống dòng nhưng không chịu vào đầu dòng bạn à.ví dụ
    Code:
    101   102   104
                            201   202
    Bạn giúp mình với. à i ở đây là mình lấy nó làm vị trí chứ không phải kích thước label bạn à.


    @kenturo: bạn chỉ rõ hơn cho mình được ko,mình làm như bạn nhưng hình lấy giá trị label của mình ko ổn.vẫn ko click được.

  5. #5
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    mình nghĩ bạn fill label bằng For đi thì hơn.

    mình vd 1 cái đơn giản thế này

    Visual C# Code:
    1. void LoadControl()
    2. {
    3.             Label[,] Batter = new Label[10, 10];
    4.             lbnum.Text = ShipNo.ToString();
    5.             for (int i = 0; i < 10; i++)
    6.             {
    7.                 for (int j = 0; j < 10; j++)
    8.                 {
    9.                     Batter[i, j] = new Label();
    10.                     Batter[i, j].Text = "";
    11.                     Batter[i, j].Name = "B1"+j;
    12.                     Batter[i, j].Size = new System.Drawing.Size(40, 40);
    13.                     Batter[i, j].Location = new System.Drawing.Point(j * 40, i * 40);
    14.                     Batter[i, j].Image = BattleShipClient.Properties.Resources.backimg;
    15.                     Batter[i, j].BorderStyle = BorderStyle.FixedSingle;
    16.                     Batter[i, j].Click += new EventHandler(Batter_Click);
    17.                     panel2.Controls.Add(Batter[i, j]);
    18.                 }
    19.             }
    20. }
    21.  
    22. void Batter_Click(object sender, EventArgs e)
    23.         {
    24.  
    25.             Label lb = (Label) sender;
    26.  
    27.             MessageBox.Show(lb.Text);
    28.         }

  6. #6
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Mặc định Thêm nhiều label vào panel bẳng code và cách gán sự kiện Click cho các label đó ?

    Trích dẫn Nguyên bản được gửi bởi yunaken Xem bài viết
    ừ cám ơn bạn,mình bỏ i vào trong rồi nhưng đoạn này của mình không ổn
    Code:
    if (lb.Text.Substring(0, 1) == "2")
                    {
                        lb.Location = new Point(i * 80, 100);
                    }

    các label 201,202,... có xuống dòng nhưng không chịu vào đầu dòng bạn à.ví dụ
    Code:
    101   102   104
                            201   202
    Bạn giúp mình với. à i ở đây là mình lấy nó làm vị trí chứ không phải kích thước label bạn à.


    @kenturo: bạn chỉ rõ hơn cho mình được ko,mình làm như bạn nhưng hình lấy giá trị label của mình ko ổn.vẫn ko click được.
    (:-) Ko ra đầu dòng là phải rồi, vì bạn có 2 đầu số.hihi. Bạn có 2 đầu số thì dùng 2 biến i1,i2: lúc đầu i1=i2=0. Sau đó:
    Visual C# Code:
    1. if (lb.Text.Substring(0, 1) == "1")
    2.                 {
    3.                 lb.Location = new Point(i1 * 80, 0);
    4. i1++;
    5.                 }
    6.             if (lb.Text.Substring(0, 1) == "2")
    7.                 {
    8.                     lb.Location = new Point(i2 * 80, 100);
    9. i2++;
    10.                 }
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  7. #7
    Ngày gia nhập
    09 2010
    Bài viết
    3

    cám ơn 2 bạn mrfour.it và kenturo nhiều,mình đã làm được rồi.

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

  1. cách dùng panel che đi label
    Gửi bởi thanhgola trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 03-06-2013, 08:59 AM
  2. Cách Add thêm Label vào ToolStripTextBox như thế nào ?
    Gửi bởi chikaboom trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-09-2011, 11:53 PM
  3. Graphic Trong suốt label 2 nhìn thấy label 1 mà không phải là nhìn form?
    Gửi bởi phuoc_it trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 10-08-2011, 03:17 PM
  4. Trả lời: 4
    Bài viết cuối: 24-05-2011, 11:51 AM
  5. Lấy giá trị của label(label.Text) trong datalist
    Gửi bởi nhatnghe_thuong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 7
    Bài viết cuối: 16-02-2011, 04:48 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