我扩展了一个PictureBox并创建了一个单例。
是否可以在同一时间以两种不同的形式显示PictureBox控件的相同实例?
提前致谢。
答案 0 :(得分:7)
否 - 控件只有一个parent control。
答案 1 :(得分:3)
当然不是。每个Control都有Parent属性(底层窗口有父窗口)。控制必须与其父级进行通信。
话虽如此,如果你需要不同形式的ImageControls来显示相同的图像,这就是你可以做的。
方法A
1)在您的应用程序中创建这些图片框的(全局)列表。
class Globals //or whatever
{
public static List<PictureBox> allBoxes=new List<PictureBox> ();
2)在表单创建时,将每个PictureBox添加到此列表中。
foreach (Control c in Controls)
{
PictureBox pb = c as PictureBox;
if (pb != null) Globals.allBoxes.Add(pb);
}
3)当您需要更改图像时,请遍历此列表:
foreach (PictureBox p in Globals.allBoxes)
{
p.Image=myImage;
}
我测试了一下,似乎你不需要克隆图像。
方法B
1)在您的应用程序中选择一个“主”PictureBox。 2)子类PictureBox,这样只要设置了Image属性就会触发事件ImageChanged(this thread中的一些代码示例) 3)在具有PictureBoxes的每个其他表单上,向该“主盒”的ImageChanged事件添加一个事件处理程序(masterBox.OnImageChanged + = new EventHandler(ImageChanged); 4)在处理程序中更改所有图像
我更喜欢方法A.
答案 2 :(得分:2)
我猜你想要在两个图片盒中显示相同的图片?请查看帮助文件(特别感兴趣的是注释部分)。
说明
通常PictureBox用于 显示位图中的图形, 图元文件,图标,JPEG,GIF或PNG 文件。
将Image属性设置为Image 你想要在设计上展示 时间或运行时间。您可以 或者指定图像 设置ImageLocation属性和 使用。同步加载图像 加载方法或异步使用 LoadAsync方法。 NoteNote:
如果您想使用相同的图像 多个PictureBox控件,创建一个 克隆每个图像 图片框即可。访问相同的图像 从多个控件导致 发生例外。
答案 3 :(得分:0)
如果您尝试在每个表单上显示徽标,那么我将子类化Picturebox并将图像加载到其中。没有单身,没有魔法。
但请注意:您必须为每个PictureBox加载图像。来自MSDN:
http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.image.aspx
Image属性设置为Image 显示。你可以这样做 设计时间或运行时间。
注意:如果你想使用相同的 多个PictureBox控件中的图像, 为每个人创建一个图像的克隆 图片框。访问相同的图像 从多个控件导致 发生例外。