0

我想在水平面板上手动创建 PictureBox 和 Label,Panel Unknown 上的 PictureBox 和 Label 的数量可能是 200 或更多或更少,我使用下面的代码来做到这一点,但我首先面临两个麻烦: 我想添加创建的新对象在第一个不是最后,例如,如果我创建了项目“ABCD E”希望它添加到面板“EDCB A”上,总是希望新的先出现。注意:面板宽度“230”高度“710” 第二个麻烦: 目前,当我使用面板滚动条向下添加新对象时,发现在创建的最后一个对象和新对象之间有很大的可用空间,如果我再次使用滚动向下并在面板上创建新对象发生更大的可用空间。

            int Right = 50, Top = 0;

            // Create Image + Text
            PictureBox pbox = new PictureBox();
            pbox.Size = new Size(140, 80);
            pbox.Location = new Point(Right, Top);
            pbox.Image = Image.FromFile("");
            Panel1.Controls.Add(pbox);


            // Create label
            Label lblPlateNOBAR = new System.Windows.Forms.Label();
            lblPlateNOBAR.Text = lblPlateNO.Text;
            lblPlateNOBAR.Location = new Point(Right + 20, Top + 80);
            Panel1.Controls.Add(lblPlateNOBAR);

            Top = Top + 150;
4

2 回答 2

0

为了使对象插入面板,您需要移动面板中已经存在的控件:

int right = 50;

// Create Image + Text
PictureBox pbox = new PictureBox();
pbox.Size = new Size(140, 80);
pbox.Location = new Point(right, 0);
pbox.Image = Image.FromFile("");

// Create label
Label lblPlateNOBAR = new System.Windows.Forms.Label();
lblPlateNOBAR.Text = lblPlateNO.Text;
lblPlateNOBAR.Location = new Point(right + 20, 80);

foreach(var control in Panel1.Controls)
{
    control.Top = control.Top + 150;
}

Panel1.Controls.Add(pbox);
Panel1.Controls.Add(lblPlateNOBAR);
于 2013-08-07T00:20:31.417 回答
0

我知道我似乎没有回答您的问题,但您也可以花很少的时间了解我的建议。我不知道您想要实现什么,但是当您想要制作如此复杂的程序时,最好自己完成所有需要的工作,而不是依赖 Windows 窗体控件。试图添加、删除、更改大量控件的位置会大大降低应用程序的性能。我建议你画,例如你的画,你自己,使用GraphicsImage对象和Paint事件。还可以处理诸如单击和选择图片之类的事情MouseEvents。一开始可能看起来有点难,但是在你完成这个之后,你会拥有更好的性能和灵活性. 考虑到您提到要在面板中放置 200 张图片,这变得更加重要。这也防止了当您更改许多控件的位置时出现的闪烁问题。值得一提的是,在这种情况下要进行滚动,您可以在ParentPanel内部放置一个并仅使用父面板的功能来处理滚动。这样你就不必再关心滚动了。 PanelAutoScroll

于 2013-08-07T00:34:14.273 回答