您的位置:首页 > 编程语言 > C#

【转载】c# winform 怎么给程序的按钮上也加上小盾牌图标

2013-12-11 15:58 309 查看
【转载于博客】2cto.com/kf/201304/205317.html
c# winform 怎么给程序的按钮上也加上小盾牌图标

      作者:simadi

需要调用Win32 API了

【1】要调用API么,要先引用命名空间

using System.Runtime.InteropServices;

【2】然后调用API 

[DllImport("user32.dll")]

private static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    /// <summary>

        ///     Enables the elevated shield icon on the given button control

        /// </summary>

        /// <param name="ThisButton">

        ///     Button control to enable the elevated shield icon on.

        /// </param>

        ///////////////////////////////////////////////////////////////////////

        private void EnableElevateIcon_BCM_SETSHIELD(Button ThisButton)

        {

            // Input validation, validate that ThisControl is not null

            if (ThisButton == null)

            {

                return;

            }


            // Define BCM_SETSHIELD locally, declared originally in Commctrl.h

            uint BCM_SETSHIELD = 0x0000160C;

            // Set button style to the system style

            ThisButton.FlatStyle = FlatStyle.System;

            // Send the BCM_SETSHIELD message to the button control

            SendMessage(new HandleRef(ThisButton, ThisButton.Handle), BCM_SETSHIELD, new IntPtr(0), new IntPtr(1));

        }

在Form上拖个Button,拖大一点哦,小了图标看不清

 



【3】然后在Form1_Load里,用API把图标加到Button1上

        private void Form1_Load(object sender, EventArgs e)

        {

            EnableElevateIcon_BCM_SETSHIELD(button1);


        }

最后执行看下效果吧!





  恩?盾牌为啥有点不一样呢,上面那个图标是server08上的,win7上应该是下面这样: 



有错误的地方欢迎指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: