Oluşturmaya çalıştığım yakın üretim kalitesinde bir uygulama için C# win32 formuna dinamik olarak resim kutuları eklemeye çalışıyorum ve hemen hemen onu aldım.Düğme tıklatmayla dinamik olarak nasıl üretilir?
Karşılaştığım sorun, bir yöntemde dinamik olarak formdaki resim kutularını veya denetimlerini ekleyemiyorum. Form1 başlatma yöntemi ile bunları forma ekledim, ancak bir button_click yönteminde denetimleri eklerseniz, bir panel kapsayıcım olmadığı sürece bunları eklemez ve panel1.Controls.Add (stuff) yazın . Ancak, daha sonra, resim kutusu, amaçlanandan tamamen farklı bir yerde görünür ve görünüşe göre, panelin kendisi tarafından engellenir. Resim kutusunun çoğu panel tarafından engellenir ve bir kısmı da panel dışıdır. Ne olup bittiği hakkında bir fikrim yok. Ben çalıştığınızda şey açılır gördüğüm
PictureBox pb = new PictureBox();
pb.Size = new Size(this.Size.Width/14, this.Size.Width/12); //I use this picturebox simply to debug and see if I can create a single picturebox, and that way I can tell if something goes wrong with my array of pictureboxes. Thus far however, neither are working.
pb.BackgroundImage = Properties.Resources.cardback;
pb.BackgroundImageLayout = ImageLayout.Stretch;
pb.Location = new Point(50, 50);
pb.Anchor = AnchorStyles.Left;
pb.Visible = true;
InitializeComponent();
this.Controls.Add(pb);
PictureBox[] pbName = new PictureBox[totaldeckcount];
for (int i = 0; i < totaldeckcount; i++)
{
pbName[i] = new PictureBox();
pbName[i].Size = new Size(this.Size.Width/14, this.Size.Width/12);
pbName[i].BackgroundImage = Properties.Resources.cardback;
pbName[i].BackgroundImageLayout = ImageLayout.Stretch;
pbName[i].Image = Properties.Resources.cardback;
pbName[i].Anchor = AnchorStyles.Left;
pbName[i].Visible = true;
int x = 0;
int y = 15;
if (i > 10)
{
y += (int)((this.Size.Height * i) + 30);
}
x = (int)((this.Size.Width/12) * Math.IEEERemainder(i, 10));
pbName[i].Location = new Point(x, y);
this.Controls.Add(pbName[i]);
}
Cardback bir çalışma doku geçerli: Burada
ben bir düğme tıklama yönteminde, PictureBoxes eklemek için çevrimiçi öğrendim kullanıyorum kodu Form1'in yönteminde bir resim kutusu yapmak, bu yüzden sorun değil. Ben Form1 yöntemiyle doğrudanPictureBox pb = new PictureBox();
kodu kopyalayıp başardı ve gayet güzel infaz beri sorun, benim dizimi olmak -appear- etmez.
Google aracılığıyla çevrimiçi bir şey bulamıyorum ve bu bana tamamen şaşırdı.
İkinci 'InitializeComponent();' for' döngüsünün içindeki çağrıyı kaldırın. – keyboardP
Ve kaldır pbName [i] .Parent = bu; ' –
@keyboardP Hiçbir zar, aynı sonuç. Birkaç kez orada olmasının tek sebebi, onu resim kutularını başlatmaya çalışıyorum çünkü; ama döngüdeki bir şeyi çıkarmak hiçbir şey yapmadı, aynı sonuç. Düğme tıklandığında hiçbir şey görünmez. – Codefun64