C# 如何从另一个UserControl更改UserControl上的picturebox
在UserControl1上,我想使pictureBox1(在UC1上)与UserControl2上的pictureBox1相同 关于UC1C# 如何从另一个UserControl更改UserControl上的picturebox,c#,winforms,user-controls,C#,Winforms,User Controls,在UserControl1上,我想使pictureBox1(在UC1上)与UserControl2上的pictureBox1相同 关于UC1 UserControl5 obj = new UserControl5(); pictureBox1.Image = obj.picturebox; public UserControl5 UserControl5Instance { get; set; } public UserControl1() { InitializeComponent
UserControl5 obj = new UserControl5();
pictureBox1.Image = obj.picturebox;
public UserControl5 UserControl5Instance { get; set; }
public UserControl1()
{
InitializeComponent();
if (UserControl5Instance != null)
{
UserControl5Instance.picturebox = (Image)this.pictureBox1.Image.Clone();
}
}
关于UC5
public Image picturebox
{
get { return pictureBox1.Image; }
}
public UserControl1 UserControl1Instance { get; set; }
public UserControl5()
{
InitializeComponent();
}
public Image picturebox
{
get { return this.pictureBox1.Image; }
set { this.pictureBox1.Image = value; }
}
这似乎不起作用
编辑
关于UC1
UserControl5 obj = new UserControl5();
pictureBox1.Image = obj.picturebox;
public UserControl5 UserControl5Instance { get; set; }
public UserControl1()
{
InitializeComponent();
if (UserControl5Instance != null)
{
UserControl5Instance.picturebox = (Image)this.pictureBox1.Image.Clone();
}
}
关于UC5
public Image picturebox
{
get { return pictureBox1.Image; }
}
public UserControl1 UserControl1Instance { get; set; }
public UserControl5()
{
InitializeComponent();
}
public Image picturebox
{
get { return this.pictureBox1.Image; }
set { this.pictureBox1.Image = value; }
}
在UC5上添加一个事件,该事件在映像更改时触发,并让UC1订阅它
public class UC1 : UserControl
{
UC5 UserControl5 = new UC5();
PictureBox picturebox;
public UC1()
{
picturebox = new PictureBox();
UserControl5.ImageChanged += UserControl5_ImageChanged;
}
private void UserControl5_ImageChanged(Image newImage)
{
if (this.picturebox.Image != null)
this.picturebox.Image.Dispose();
this.picturebox.Image = (Image)newImage.Clone();
}
}
public class UC5 : UserControl
{
public delegate void ImageChangedHandler(Image newImage);
public Image image {
get { return _image; }
set {
if (_image != value) {
_image = value;
ImageChanged?.Invoke(_image);
} } }
public Image _image = null;
public event ImageChangedHandler ImageChanged;
}
每当更新UC5.Image时,这应该会更新UC1上的picturebox映像。-“如果要在多个picturebox控件中使用同一映像,请为每个picturebox创建映像的克隆。从多个控件访问同一映像会导致出现异常。”。但是你能告诉我一种从UC5将克隆放入UC1的方法吗?
usercontrol5obj=newusercontrol5()代码>似乎是个错误。您可能在某个地方有一个现有的UserControl5
,例如在父窗体上或当前的UserControl1
中。当前您创建了一个UserControl5
的实例,该实例明显不同于窗体上的实例。遵循指示。