我已经尽力尝试了所有可以接触到的东西,但它无法正常工作! 有没有人解决过这个问题?
我可以将我的图像放在后面,但只有在表单从未尝试调整大小时才会起作用(缩小是正常的,不断增长会留下空白的灰色空间......)
答案 0 :(得分:3)
两个选项:
答案 1 :(得分:3)
我尝试过Form&#39的resize事件,它对我有用:
private void Main_Resize(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.stockandinventorymanagement;
}
答案 2 :(得分:0)
将BackgroundImageLayout属性更改为Stretch。这将拉伸您的图像以始终填充背景空间。
答案 3 :(得分:0)
很久以前,我发现使用面板作为MDI容器可以轻松解决这个问题。
答案 4 :(得分:0)
将RightToLeftLayout属性设置为FALSE
答案 5 :(得分:0)
试试这段代码:
重要提示:属性' BackgroundImageLayout'形式必须等于代码
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
graphics.FillPath(semiTransBrush, graphicsPath);
答案 6 :(得分:0)
谢谢你的想法!!!! 只是更改面板的背景并将其放在下面的代码中,这太简单了 C#:
Form2 frm = new Form2();
frm.TopLevel = false;
panel1.Controls.Add(frm);
frm.Show();
这适用于vb.net
Dim frm = New Form2
frm .TopLevel = False
Panel1.Controls.Add(frm )
frm .Show()
答案 7 :(得分:0)
对于通过Google到达此页面的其他人,我找到了解决此问题的方法here。
通过将此代码放入表单的Initialize()
函数中,即使进行WindowState
更改和调整表单大小,我也可以得到正确的MDI容器背景图片:< / p>
// as this code occurs in the Form's "Initialize()" function, any references to
// "this." are to the Form instance itself (not the MDI control!)
MdiClient client = this.Controls.OfType<MdiClient>().First();
client.BackgroundImageLayout = this.BackgroundImageLayout;
client.Paint += ( s, e ) =>
e.Graphics.DrawImage( this.BackgroundImage, (s as MdiClient).ClientRectangle );
//Set this to repaint when the size is changed
typeof( Control ).GetProperty(
"ResizeRedraw",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance
).SetValue( client, true, null );
//set this to prevent flicker
typeof( Control ).GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance
).SetValue( client, true, null );
为简单起见,我使MDI容器使用了Form的BackgroundImage
(无论如何都会隐藏)和BackgroundImageLayout
属性,以便我可以使用Designer和Designer中Form自己的属性轻松地设置/修改这些设置。将那些设置自动反映在设计者不可访问的MDI容器中。这也意味着我不必担心管理图像的垃圾收集,并且可以摆脱原始代码段中的Using {}
代码(由于图像本身是由Using块处理的,因此实际上会导致错误)然后在试图显示现在丢失的图像后立即将其崩溃)。
答案 8 :(得分:0)
private void MainMenu_Load(object sender, EventArgs e)
{
foreach (Control ctrlControl in this.Controls)
{
if (ctrlControl is MdiClient)
{
BackgroundImage = Properties.Resources.Mbck;
}
}
}