c# - 如何将图像从 UserControl1 传递到另一个 UserControl2(C#、Windows 窗体)
问题描述
我的 Form1 上有 2 个用户控件。它们在面板内相互堆叠。在 UserControl1 中,我使用 OpenFileDialog 从文件加载图像。在我的 Form1 上,我还有一个切换按钮,用户可以在其中切换两个用户控件。这工作得很好,但是一旦切换按钮设置为状态 - 切换按钮被选中,如何将图像从 UserControl1(包含面板上的图像)传递到 UserControl2(包含用于显示图像的图片框控件)?感谢您的任何提示!
用户控件1
public partial class UserControl1 : UserControl
{
private static UserControl1 _instance;
public static UserControl1 Instance
{
get
{
if (_instance == null)
_instance = new UserControl1();
return _instance;
}
}
private Image _icon;
public Image Icon
{
get { return _icon; }
set { _icon = value; panel1.BackgroundImage = value; }
}
private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
using (OpenFileDialog OFD = new OpenFileDialog())
{
OFD.Filter = "Picture Files|*.bmp;*.jpg;*.gif;*.png;*.tif";
if (OFD.ShowDialog() == DialogResult.OK)
{
panel1.BackgroundImage = Image.FromFile(OFD.FileName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
用户控件2
public partial class UserControl2 : UserControl
{
public UserControl2()
{
InitializeComponent();
}
private static UserControl2 _instance;
public static UserControl2 Instance
{
get
{
if (_instance == null)
_instance = new UserControl2();
return _instance;
}
}
表格1
private void ToggleButton1_CheckedChanged(object sender, EventArgs e)
{
if (!toggleButton1.Checked)
{
if (!panel1.Controls.Contains(UserControl1.Instance))
{
panel1.Controls.Add(UserControl1.Instance);
UserControl1.Instance.BringToFront();
}
else
{
UserControl1.Instance.BringToFront();
}
}
if (toggleButton1.Checked)
{
if (!panel1.Controls.Contains(UserControl2.Instance))
{
panel1.Controls.Add(UserControl2.Instance);
UserControl2.Instance.BringToFront();
}
else
{
UserControl2.Instance.BringToFront();
}
}
}
解决方案
推荐阅读
- sql-server - SQL Server:如何查找执行了哪些行
- typescript - 打字稿编码约定以避免导入声明冲突
- php - 如何从 Laravel 的数据库中获取产品 ID
- python - 覆盖 FlaskForm.validate() 不会让 POST 请求通过
- mysql - UNION SELECT CONCAT 在 MariaDB / MySQL 之间的工作方式不同
- java - java.time.ZonedDateTime 与 java.util.Calendar 性能检查
- aws-lambda - 创建 Python 3.6 AWS Lambda 包
- android - 尝试使用 Apple Music 登录时,MusicKit 卡在加载屏幕上(用于媒体控制)
- c# - 如何在 jqx 小部件网格角度 7 中进行服务器端过滤、分页和排序
- javascript - 为什么 Collection.bulkwrite() 只向 mongodb 数据库写入一个文档