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.
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(); ....................... }
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.
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 đã.
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.
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]); }
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
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]); } }
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]
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); }