当我点击彩色图片框时,一个彩色图片框被添加到主面板。
下一次我点击按钮时,下一个图片框应该会被添加到前一个图片框的旁边。你如何获得前一个图片框的左和宽度?
的数据
private void Back_Openings(object sender, EventArgs e)
{
int left = mainPanel.Left;
int top = mainPanel.Top;
PictureBox p = (PictureBox)sender;
var picture = new PictureBox
{
Name = "back_PictureBox",
Size = new Size(120, 20),
Location = new Point(left, top),
BackColor= p.BackColor,
BorderStyle= BorderStyle.FixedSingle,
};
this.Controls.Add(picture);
picture.BringToFront();
}
字符串
2条答案
按热度按时间gopyfrb31#
您有几个选项可以将PictureBox添加到另一个PictureBox旁边。要回答您的具体问题,* 如何获得先前添加的PictureBox的Left和Width?*,一种方法是对
mainPanel
的Controls
集合进行Linq
查询。字符串
的数据
这个屏幕截图显示了第二个选项,它“可能适合也可能不适合”您的项目,那就是使用
FlowLayoutPanel
,让它来处理所有这些事情。型
第三种方法是创建一个有意义的
PictureBox
对象,然后使用Controls
集合的string
索引器来检索所需的对象。型
的
t0ybt7op2#
将图片的宽度添加到左边的
Location
点,应该可以做到这一点。您已经给了图片Size(120, 20)
,我假设这意味着您的图片是20像素高,120像素宽。您需要使用宽度。为了使其工作,您需要有一个count
整数,在程序开始时等于0,每次你创建一个新的盒子时,它都会增加1。然后你要把盒子的宽度加到位置的左起始点上,乘以count
变量。你不应该在你给我们看的代码中创建并给count
变量赋值0,因为你不想总是用0创建它。然后将其添加到
location
乘以width
,然后每次创建图片时都应添加1。例如:字符串
与您的代码相比,更改有2个。第一个更改是在左侧位置添加
+ (count * 120)
。这样,您的位置将从右侧120像素开始,每添加一张图片。由于count
在开始时为0,因此不会影响第一张图片。另一个更改是在末尾添加count++;
,这将确保count
每次都上升。另一种方法是将
+ (count * 120)
添加到代码顶部的左变量中,如下所示:型