为父窗体添加背景图片

原创 萧瑟  2016-11-02 22:36:13  阅读 693 次 评论 0 条
一、目标【为父窗体添加背景图像并可显示子窗体】
 
二、方法
**********************《方法一》************************
    在父窗体添加PictureBox控件,在PictureBox控件的右上角处有个“三角形”,点击选择图像。然后设置以下属性:
    Anchor属性:将Top、Bottom、Left、Right都勾选上。
    SizeMode属性:设置为StretchImage。

当设置完成后却发现点击时不出现子窗体。

因为子窗体是活动区域是父窗体的Client区域(黑灰色),而当将PictureBox覆满整个Client区域时,子窗体则显示不出来了,就像是图片遮住了子窗体一样。
----------------《解决方法(添加引用)》----------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLClient;
using System.Runtime.InteropServices;//添加引用
namespace ICAN
{
    public partial class Form1 : Form
    {
        [DllImport("user32")]//导入数据连接库
        public static extern int SetParent(int hOfChild, int hOfParent);
        Form2 frmChild1 = null;
        public Form1()
        {
            InitializeComponent();
        }
       
        private void 子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frmChild1 == null)
            {
                frmChild1 = new Form2();
                frmChild1.MdiParent = this;
                frmChild1.Show();
                SetParent((int)frmChild1.Handle, (int)this.Handle);
            }
        }
    }
}
------------------------《缺点》--------------------
弹出的子窗体会覆盖StatuStrip和MenuStrip区域
 
**********************《方法二》************************
在父窗体的BackgroundImage中设置背景图片,将BackgroundImageLayout属性设为Stretch。若当运行时背景图片不能随着窗体变化大小,可接着设置。在父窗体SizeChanged事件中添加以下代码,这样在每次改变窗体大小时,都重新为父窗体添加背景图像。当运行时窗体会闪烁,可将DoubleBuffered属性设为True.

private void Form1_SizeChanged(object sender, EventArgs e)
{
this.BackgroundImage = Image.FromFile("Main.jpg");
}
-------------------------《缺点》----------------------
拖动窗体改变大小时会出现闪烁
 
 
**********************《方法三》************************
以子窗体的背景图像作为父窗体的背景图像
新建一个子窗体,将子窗体的FormBorderStyle属性设为None,并为其添加背景图像。在加载父窗体的时候同时加载子窗体。具体设置此处略。
本文地址:https://www.xsyrz.cn/C3_zhishi.html
版权声明:本文为原创文章,版权归 萧瑟 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?