C#窗体控件阴影效果和自定义的控件如何实现阴影效果

问题描述

C#窗体控件阴影效果和自定义的控件如何实现阴影效果

1.Win7系统小开启“窗体阴影”效果后,VS2012环境
2.无边框窗体通过SetClassLong、GetClassLongAPI可以实现窗体阴影效果。但该窗体添加至控件中时,阴影效果消失,如何能强制显示阴影效果?
3.自定义的控件如何实现阴影效果?

谢谢!

运行结果:外层窗体(Form1)有阴影效果,内层窗体(f)无阴影效果。

代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        //API函数加载,实现窗体边框阴影效果
        SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW);

        Form f = new Form();
        f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        f.BackColor = Color.Peru;
        f.Width = 200;
        f.Height = 200;
        f.Location = new Point(50, 50);
        f.TopLevel = false;
        this.Controls.Add(f);
        f.Show();
        SetClassLong(f.Handle, GCL_STYLE, GetClassLong(f.Handle, GCL_STYLE) | CS_DropSHADOW);
    }

    #region 窗体边框阴影效果变量申明

    const int CS_DropSHADOW = 0x20000;
    const int GCL_STYLE = (-26);
    //声明Win32 API
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int GetClassLong(IntPtr hwnd, int nIndex);
    #endregion
}

解决方案

外层窗体(Form1)有阴影效果,内层窗体(f)无阴影效果。

解决方案二:

外层窗体(Form1)有阴影效果,内层窗体(f)无阴影效果。

时间: 2024-09-19 20:36:45

C#窗体控件阴影效果和自定义的控件如何实现阴影效果的相关文章

后台有2个控件(button和自定义验证控件),点击button怎么先调用自定义验证控件

问题描述 protectedvoidCustomValidator1_ServerValidate(objectsource,ServerValidateEventArgsargs){stringuserId=userName.Text.Trim();if(CatalogAccess.GetMemberExit(userId)!=null){args.IsValid=false;}else{args.IsValid=true;}}protectedvoidbtnSave_Click(object

.Net(C#)自定义WinForm控件之小结篇(强力推荐)

强力推荐的网站:http://www.myfirm.cn/News/dotNetGUIAPI/ 本文转载:http://www.myfirm.cn/News/dotNetUserInterface/20080216063648402.html 写在前面: .Net已经成为许多软件公司的选择,而.Net自定义WinForm界面控件,也成为编程的热点,越来越多的程序员会开发自己需要的自定义界面控件.小作坊网介绍了多种自定义的界面控件,基本了包括了日常所需的各种基本控件,介绍的自定义控件,都对原有的界

完善自定义分页控件

上一篇写了一个简单的自定义分页控件,当时写的不够完善,不能自定义控件的样式.现在完善了,望同 大家共同探讨. 现在已经在网上发布的分页控件特别多,而且大多都功能特别强,但是之所以选择自己写,主要是因为自 己写可以根据自己的要求来设计,不用的功能就功能免了. 本控件可以自定义样式,而且传入的参数和其它常用的分页控件差不多,记录总数和一页的数量,是否自 定义样式,当页面数量特别多的时候,可以在分页信息栏中显示前几页和后几页. 具体代码如下: using System;using System.Col

Android使用GridLayout绘制自定义日历控件_Android

效果图 思路:就是先设置Gridlayout的行列数,然后往里面放置一定数目的自定义日历按钮控件,最后实现日历逻辑就可以了. 步骤: 第一步:自定义日历控件(初步) 第二步:实现自定义单个日期按钮控件 第三步:将第二步得到的控件动态添加到第一步的布局中,并实现日期逻辑 第四步:编写单个日期点击监听器接口 第一步:自定义日历控件(初步) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln

iOS自定义日历控件的简单实现过程_IOS

因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑就OK了,下面开始自己从开始到完成的整个过程 1.首先做NSDate类目,扩展一些方法让日期之间转换更加方便 #import <Foundation/Foundation.h> @interface NSDate (LYWCalendar) #pragma mark - 获取日 - (NSInte

Android自定义日历控件实例详解_Android

为什么要自定义控件 有时,原生控件不能满足我们对于外观和功能的需求,这时候可以自定义控件来定制外观或功能:有时,原生控件可以通过复杂的编码实现想要的功能,这时候可以自定义控件来提高代码的可复用性. 如何自定义控件 下面我通过我在github上开源的Android-CalendarView项目为例,来介绍一下自定义控件的方法.该项目中自定义的控件类名是CalendarView.这个自定义控件覆盖了一些自定义控件时常需要重写的一些方法. 构造函数 为了支持本控件既能使用xml布局文件声明,也可在ja

实例讲解Android应用中自定义组合控件的方法_Android

自定义view大概可以分成: 继承view 组合view 自己画的view(用paint和canvas) 自定义viewgroup(widget) 最近又跟同学聊起来了,于是就准备自己实现一个imagebutton来练练手.(最简单的了)以及后面一个把imageview与textview结合使用的案例. ImageButton要实现ImageButton最容易想到的不就是把button和imageview合在一起么.嗯,人容易就想到这是一个组合自定义view.可是如何把一个image放到butt

在Android开发中使用自定义组合控件的例子_Android

一.定义一个XML布局文件setting_item_view.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height=

Android 自定义Button控件实现按钮点击变色_Android

效果图如下所示: 一.shape 样式:(在drawable新建-->new-->Drawable resource file 在父级标签selector添加Item ) <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item and