2016.5.30实现透明Panel及控件置顶的方法

想放置一个透明Panel在某控件上端,实现效果是可透过此Panel看见下面控件,但鼠标点击却无任何反应。

1、新建置自定义Panel类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing;

namespace NavDataManager

{

public class MyTransparentPanel : Panel

{

public MyTransparentPanel()

{

this.SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.Opaque, true);

this.BackColor = Color.Transparent;

}

protected override CreateParams CreateParams

{

get

{

CreateParams cp = base.CreateParams;

cp.ExStyle = 0x20;

return cp;

}

}

}

}

2、窗体中添加此自定义Panel控件

MyTransparentPanel pan = new MyTransparentPanel();

pan.Size = uC_EditLeg1.Size;

pan.Location = new Point(uC_EditLeg1.Left, uC_EditLeg1.Top);

this.Controls.Add(pan);

此时并没有效果,因为此Panel是置于控件底层的,没有覆盖别的控件

3、将此控件置于顶层,遮挡其它控件

最简单的方法:mypan.BringToFront();  //前提是先执行this.Controls.Add(pan);

此外还可以用 this.Controls.SetChildIndex(mypan,0);//索引越小,控件位置越靠上。

还有一种笨办法

int index = this.Controls.GetChildIndex((Control)pan);//取得要置顶控件的index

ArrayList AL = new ArrayList();//用来装入控件的容器

for (int i = 0; i < index; i++)//把要置顶控件上面的控件都装入容器

AL.Add(this.Controls[i]);

for (int i = 0; i < AL.Count; i++)

{

//用一次删除和一次添加操作,让它上面的控件排到下面去.

this.Controls.Remove((Control)AL[i]);

this.Controls.Add((Control)AL[i]);

}

此时这些控件全到panel下面去了,鼠标不管用了。哈哈

时间: 2024-10-13 19:59:49

2016.5.30实现透明Panel及控件置顶的方法的相关文章

c#如何将子窗体显示到父窗体的容器(panel)控件中

如何将一个窗体显示到一个容器控件中,刚开始想的比较简单,用窗体容器控件添加一般控件的方法,试了一试,代码如下: Form2 frm = new Form2(); this.panel1.Controls.Add(frm); frm.Show(); 但是提示了一个错误:无法将顶级控件添加到控件. 原来窗体是一个顶级控件,是无法将一个顶级控件添加到一个容器中来的.最后在网上找了相关资料,只需要将代码改下即可,还是原来的思路,代码如下: Form2 frm = new Form2(); frm.Top

C#基础视频教程3.1 常见控件类型和使用方法

可以从左侧的工具箱中找到常见的控件(你要在Form1这种窗体上) ? 为了方便你也可以把工具箱整个拖过去,这样从上到下控件都给你排好了 ? 对于按钮来说,最常见的就是他的背景颜色,文字,字体,还有是否启用(我们输入按钮名称+点就可以访问这个控件的所有属性,事件和方法,注意属性是一把扳手的标识,事件是一个闪电,方法是一个小方块) ? 详细解释一下属性:我们先判断这个按钮是否已经Enabled(这里判断的就是按钮2的属性,属性就好比一个人有他的属性,身高,年龄,体重,姓名,性别,有一些属性是只读的,

【随笔系列】Asp.Net Mvc分页控件PagedList的使用方法及配置

企业在做Asp.Net Mvc开发过程中,很多时候都是一些CRUD,最基本的就是一个列表页面,然后附带一些功能按钮.如果有数据列表,大多数就会涉及到对数据进行分页,这次就介绍一下Mvc PagedList控件分页的使用方法.Github PagedList链接 . 下面我通过新建Mvc项目来展示PagedList的使用方法. 一.新建BookLibrary解决方案 确定后,选择MVC 然后点击确定. 二.添加PagedList与PagedList.Mvc的程序包. 选择BookLibrary项目

【ANDROID 初学】控件--IMAGEVIEW的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

解决虚拟桌面IE受信任站点与active控件下载提示的方法

Pool池桌面(随机)安装完成以后,通过IE打开办公平台出现office控件问题: 1.  同一台虚拟桌面,同一个用户帐号,注册安装一次控件就行了. 2.  同一台虚拟桌面,不同的用户帐号,必须重新安装注册控件才行. 对于随机虚拟桌面来说,用户每次登录的可能都是不同的虚拟桌面,那么就会出现每次都要安装注册控件,这要如何来解决? 对于IE中的Active控件,如果要实现不会弹出提示,自动安装,是如何设置的? (1)加入可信站点: (2)设置可信站点的"自定义级别",其中相关Active控

UITableView控件didSelectRow和didDeselectRow方法注意事项

UITableView控件didSelectRow和didDeselectRow方法注意事项 1. 因Xcode强大的自动补全功能,在使用UITableView如下两个方法时,务必特别小心,避免出错: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; - (void)tableView:(UITableView *)tableView didDeselectRo

【Android 初学】5、控件--ImageView的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But