Cần giúp về picturebox trong C#

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi chiphuc113, 2/4/10.

  1. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    mình đang muốn tao ra một mảng gồm 9 picture và mỗi mảng sẽ mang một picture, Đoạn Code của mình như sau:

    PictureBox[] pic;
    pic1 = Image.FromFile("Resources\\Untitled3.png");

    for (int PicCount = 0; PicCount < 9; PicCount++)
    {
    pic = new PictureBox[9];
    pic[PicCount].Image = pic1;
    int X = (PicCount % 3) * 65 + 20;
    int Y = (PicCount / 3) * 84 + 20;

    pic[PicCount].Top = X;
    pic[PicCount].Left = Y;
    pic[PicCount].Width = 65;
    pic[PicCount].Height = 84;
    groupBox1.Controls.Add(pic[PicCount]);
    }
    khi build ra thì không có vấn đề gì nhưng khi chạy thì lại phát sinh lỗi
    có bác nào biết tại sao và cách khắc phục thì giúp mình với.
     
  2. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Sửa pic[PicCount].Image = pic1; thành pic[PicCount].Image = pic1.Image;
     
  3. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    vẫn không đươc bạn ơi:( nó vẫn báo lỗi
     
  4. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Kì vậy, sao trong code bạn ghi là pic[PicCount] nhưng trong hình lại là pic[c].

    for (int PicCount = 0; PicCount < 9; PicCount++)
    {
    pic = new PictureBox[9];
    .......................
    }

    pic = new PictureBox[9]; đem ra ngoài vong lặp và sửa pic= new PictureBox[9] thành pic[PicCount]= new PictureBox();

    Nói chung là sửa lại thành thế này:

    pic = new PictureBox[9];
    for (int PicCount = 0; PicCount < 9; PicCount++)
    {
    pic[PicCount]= new PictureBox();
    .......................
    }
     
    Chỉnh sửa cuối: 3/4/10
  5. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    biến [piccount] hay biến [c] cũng chỉ là biến mình dùng để đếm cho mảng mà thôi 2 thằng này chả khác gì nhau cả. Còn cái cách mà bạn chỉ đem pic=new picturebox[9] ra ngoài thì vẫn gặp phải lỗi y như ở trên.
     
  6. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Còn cái này nữa bạn: pic[PicCount]= new PictureBox();
    Bạn post cái project lên để minh down về xem thế nào đã.
     
  7. darkxiiindp

    darkxiiindp Mr & Ms Pac-Man

    Tham gia ngày:
    20/5/07
    Bài viết:
    170
    pic[c] bị null nên khi truy cập thuộc tính Image của nó thì xẩy ra exception. Bạn cứ xem cửa sổ watch/debug là biết liền.

    Cách sửa đơn giản nhất bạn tạo cái pic1 là PictureBox, sau đó gán image cho pic1. Đến bước gán pic[c] = pic1; luôn là được.
     
  8. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    nè bạn coi dùm mình với. :D:D:D:D:D:D
     

    Các file đính kèm:

  9. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Mã:
            private void Form1_Load(object sender, EventArgs e)
            {
                for (int PicCount = 0; PicCount < 9; PicCount++)
                {
                    pic[PicCount]= new PictureBox();              
                    pic[PicCount].Image = pic1;
                    int X = (PicCount % 3) * 65 + 20;
                    int Y = (PicCount / 3) * 84 + 20;
    
                    pic[PicCount].Top = X;
                    pic[PicCount].Left = Y;
                    pic[PicCount].Width = 65;
                    pic[PicCount].Height = 84;
                    groupBox1.Controls.Add(pic[PicCount]);
                }
    
     
  10. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    Cuối cùng thì chương trình cũng chạy được rồi nhưng mà theo những gì tớ viết thì đáng lý nó phải hiện ra 9 cái hình chứ sao lại chỉ có một cái. Nhờ bạn thêm một chút nữa vậy giúp mình làm sao để xuất ra 9 cái hình với.:P:P:P
     
  11. Magic_fantasy

    Magic_fantasy Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    213
    Bạn thử cách này xem
    Mã:
            private void Form1_Load(object sender, EventArgs e)
            {
                for (int PicCount = 0; PicCount < 9; PicCount++)
                {
                    pic[PicCount]= new PictureBox();              
                    pic[PicCount].Image = pic1;
                    int X = (PicCount % 3) * 65 + 20;
                    int Y = (PicCount / 3) * 84 + 20;
    
                    //pic[PicCount].Top = X;
                    //pic[PicCount].Left = Y;
                    pic[PicCount].Location= new Point(X,Y);
                    pic[PicCount].Width = 65;
                    pic[PicCount].Height = 84;
                    groupBox1.Controls.Add(pic[PicCount]);
                }
            }
    
     
  12. chiphuc113

    chiphuc113 Mr & Ms Pac-Man

    Tham gia ngày:
    1/12/06
    Bài viết:
    100
    Hay quá mình làm được rồi cảm ơn bạn nhiều lắm. Ở đây có cái yahoo của mình bạn ép nick mình dô nha tại mình cũng đang học lập trình nên cũng mong có người giúp mình lắm.
    [email protected]
     
  13. 3rr0r

    3rr0r Youtube Master Race

    Tham gia ngày:
    3/7/07
    Bài viết:
    30
    Nơi ở:
    Underground
    Nếu là mình thì mình viết thế này
    Mã:
      for (int PicCount = 0; PicCount < 9; PicCount++)
                {
                    PictureBox pic = new PictureBox();
                    pic.Image = pic2;
                    int X = (PicCount % 3) * 65 + 20;
                    int Y = (PicCount / 3) * 84 + 20;
                    pic.Location = new Point(X, Y);
                    pic.Size = new Size(65, 84);
                    groupBox1.Controls.Add(pic);
    
                }
     

Chia sẻ trang này