2013-02-21 13 views
9

Tôi xin lỗi nếu điều này có vẻ n00bish, nhưng tôi đã tìm kiếm điều này trong một vài ngày nay. Tôi đang cố gắng tự động thêm hộp kiểm vào biểu mẫu cửa sổ; tuy nhiên, chỉ có một hộp kiểm xuất hiện trên biểu mẫu. Đây là mã của tôi:Tự động thêm các hộp kiểm vào một biểu mẫu Windows Chỉ hiển thị một hộp kiểm

for (int i = 0; i < 10; i++) 
{ 
    box = new CheckBox(); 
    box.Tag = i.ToString(); 
    box.Text = "a"; 
    box.AutoSize = true; 
    box.Location = new Point(10, i + 10); 
    Main.Controls.Add(box); 
} 

Như bạn có thể thấy tôi đang thêm hộp kiểm qua vòng lặp for. Tôi đã thử gây rối với vị trí và cho phép tự động hóa trong trường hợp chúng bị chồng chéo bằng cách nào đó. Kết quả là một hộp kiểm duy nhất có văn bản "a".

+4

Thử i * 50 thay vì i + 10 mà sẽ chỉ chuyển mỗi hộp 1 pixel – Benny

Trả lời

15

Thực ra bạn đã tạo một CheckBox nhưng trong cùng một điểm.

CheckBox box; 
for (int i = 0; i < 10; i++) 
{ 
    box = new CheckBox(); 
    box.Tag = i.ToString(); 
    box.Text = "a"; 
    box.AutoSize = true; 
    box.Location = new Point(10, i * 50); //vertical 
    //box.Location = new Point(i * 50, 10); //horizontal 
    this.Controls.Add(box); 
} 
+0

Chỉ cần một lưu ý cho OP, vì có một số nhầm lẫn với câu trả lời khác ... bằng cách sử dụng 'box = new CheckBox();' bên trong vòng lặp thay vì 'CheckBox box = new CheckBox();' cũng sẽ hoạt động. – NominSim

+0

Cảm ơn tất cả các câu trả lời nhanh của bạn! Các vấn đề là: khoảng cách thẳng đứng giữa các hộp kiểm quá nhỏ và hộp kiểm không được tạo trong vòng lặp. – cruskai239

+0

@NominSim vâng tôi biết. đó là lý do tại sao tôi nói từ câu trả lời của tôi. – spajce

0

Trong trường hợp này với sự hỗ trợ gán động Tên thuộc tính làm cách nào để chọn hộp kiểm, trong một số thao tác khác như nút gửi. làm thế nào tôi có thể nhận được tất cả các hộp kiểm tra được kiểm tra và được tạo ra trong vòng lặp?

0

Nếu bạn có một thể hiện từ mỗi nút bạn có thể thực hiện với nút bấm của bạn hoặc sự kiện của bạn để làm một cái gì đó giống như

CheckBox myCheckedBox = (CheckBox)sender;