C# 调整窗体大小后,PictureBox将消失
我有一个MainForms.cs和功能区,我想在功能区的右上角放一个透明的图片盒(图片盒代表我的徽标) 这就是我尝试过的:C# 调整窗体大小后,PictureBox将消失,c#,winforms,C#,Winforms,我有一个MainForms.cs和功能区,我想在功能区的右上角放一个透明的图片盒(图片盒代表我的徽标) 这就是我尝试过的: 我把图片盒放在色带的右上角 我将背景色设置为透明 我加载PNG图像(包含透明) 我将图像的父对象设置为ribbon(这样,PictureBox相对于ribbon是透明的) 代码: InitializeComponent(); pictureBox1.Parent = ribbon1; 直到这里一切都很好 我的问题: 当我调整窗体的大小时,图片框将消失 在OnPain
- 我把图片盒放在色带的右上角
- 我将背景色设置为透明
- 我加载PNG图像(包含透明)
- 我将图像的父对象设置为ribbon(这样,PictureBox相对于ribbon是透明的)
InitializeComponent();
pictureBox1.Parent = ribbon1;
直到这里一切都很好
我的问题:
当我调整窗体的大小时,图片框将消失
在OnPaint功能上,我重置所有设置,如下所示:
protected override void OnPaint(PaintEventArgs pe)
{
this.Activate();
pictureBox1.Visible = true;
pictureBox1.Show();
pictureBox1.BringToFront();
}
但是没有任何东西可以让Picturebox出现。请告诉我我错过了什么。我下载了您正在使用的DLL,并创建了一个小测试示例。我注意到PictureBox的父属性设置为null。通过在OnPaint事件中将父对象添加回Picturebox,我可以在表单大小增大时使其工作,但在表单大小减小时会消失。当我将相同的代码放入onresizeeventhandler时,它的工作方式与您预期的一样
public partial class Form1 : Form
{
PictureBox pictureBox1 = new PictureBox();
public Form1()
{
InitializeComponent();
pictureBox1.Image = Image.FromFile(@"C:\temp\test.jpg");
pictureBox1.Parent = ribbon1;
pictureBox1.Location = new Point(this.Width-pictureBox1.Width,10);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
if (pictureBox1.Parent == null)
{
pictureBox1.Parent = ribbon1;
pictureBox1.Visible = true;
pictureBox1.Location = new Point(this.Width - pictureBox1.Width, 10);
}
}
}
如果这是Winforms,您如何获得功能区?或者它是一个菜单?我从这个链接中得到的功能区:我只需要编辑我的信息,我添加了一张我的主窗体的照片,上面有徽标,谢谢。不幸的是,我没有这方面的经验。你如何在你的彩带上设置你的图片框的位置太棒了!!这是OnResize功能的工作,非常感谢Mark