C# 重写UserControl和Form的CreateParams方法。。。求详解,并给下面的代码加详细注释。。。谢谢。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 重写UserControl和Form的CreateParams方法。。。求详解,并给下面的代码加详细注释。。。谢谢。。。相关的知识,希望对你有一定的参考价值。

protected override CreateParams CreateParams

get

CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;

protected override CreateParams CreateParams

get

CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;//用双缓冲从下到上绘制窗口的所有子孙
return cp;

参考技术A 大哥你能把源码拷贝的好点吗,妈的,看不懂啊追问

懂不懂啊,只是一段独立的代码,,,已经很全了

追答

不懂,哈哈哈,哇哈哈哈。

将图片从usercontrol传递到Form

我有一个带有1个面板的主窗体,面板有10个用户控件,每个用户控件都有图片框。

主要形式:

private void Form1_Load(object sender, EventArgs e)    
{

    Picturebox1.Image=....

    for(int i=0;i<10;i++)
    {
        uscontrol a=new uscontrol()
        {
            usimage=Image.Fromfile....  
        };
        panel1.Controls.Add(a);
    }
}

用户控制:

public Image usimage
    {
        get { return imagebox.Image; }
        set { imagebox.Image = value; }
    }

当我点击其中一个用户控件时,我怎么能这样做,它将该用户控件的图像传递给主窗体并在Picturebox1中显示,谢谢。

答案

首先,您需要将MouseClickEvent添加到每个uscontrol。要实现这一点,请将Form1_Load编辑为此。

Picturebox1.Image=....
for(int i=0;i<10;i++)
{
    uscontrol a=new uscontrol()
    {
        usimage=Image.Fromfile....  
    };
    a.MouseClick += new MouseEventHandler(USControl_Clicked); //Note this added line 
    panel1.Controls.Add(a);
}

然后你需要将USControl_Clicked添加到你的From1代码中。

private void USControl_Clicked(object sender, MouseEventArgs e)
{
    //Here we cast sender to your uscontrol class and access usimage
    Picturebox1.Image = (sender as uscontrol).usimage; 
}

以上是关于C# 重写UserControl和Form的CreateParams方法。。。求详解,并给下面的代码加详细注释。。。谢谢。。。的主要内容,如果未能解决你的问题,请参考以下文章

C# 做的winform窗体程序把一个Form给为自定义控件?

将Form转换为UserControl

实现点击Form区域内除ListBox以外的其他地方,实现ListBox的隐藏,包括UserControl范围内,也包括UserControl之外Form之内

C# 重写LinkLabel控件的click事件

从usercontrol访问表单

将图片从usercontrol传递到Form