5

私が構築しようとしている製品に近い品質のアプリケーションの C# win32 フォームにピクチャボックスを動的に追加しようとしていますが、かなりうまくいきません。

私が直面している問題は、メソッドでピクチャボックスまたはコントロールをフォームに動的に追加できないように見えることです。Form1 の初期化メソッドを使用してフォームに追加しましたが、たとえば、button_click メソッドでコントロールを追加すると、パネル コンテナーがなくて panel1.Controls.Add(stuff) と入力しない限り、コントロールは追加されません。 . しかし、その後、ピクチャボックスが意図したものとはまったく異なる場所に表示され、パネル自体によってブロックされているようです。ピクチャボックスの大部分はパネルによってブロックされており、その一部はパネルの外側にあります。何が起こっているのかわかりません。

ボタンクリック方式でピクチャボックスを追加するためにオンラインで学んだコードを次に示します。

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]);
        }

カードバックは機能するテクスチャです。Form1 のメソッドでピクチャボックスを作成しようとすると、ポップアップが表示されるので、問題はありません。コピーできたので、問題は私の構文ではないようです

PictureBox pb = new PictureBox();

Form1 メソッドに直接コーディングすると、問題なく実行されました。

私はグーグル経由でオンラインで何も見つけることができません.これは私を完全に困惑させます.

4

2 に答える 2

3

問題は、プログラムの背景画像として機能するピクチャボックスがあったことであり、それはwinform自体とほぼ同じ大きさでした。ピクチャボックスは、プログラムで作成されたすべてのコントロールをブロックするため、コードが何もしていないように見えます。

于 2013-09-01T05:13:59.823 に答える