在开发过程中都会遇到一些小小的问题,可能这个问题看似简单,但处理起来就相当的麻烦也说不定.
我将一些自己开发中的小技巧写出来告诉给大家,希望大家有所帮助.

这篇文章中将介绍如何隐藏起Form右上角的OK/X按钮,有时候用户觉得不需要这个按钮,那去掉它吧~~~~

再次介绍下该按钮的功能,X表示最小化,OK表示确认并关闭.通常新建一个Form后,默认窗体的最小化是True,所以如果需要显示OK的话,就需要将该属性设为False.

隐藏该按钮需要调用3个API

1 [DllImport("aygshell.dll")]
2 private static extern bool SHDoneButton(IntPtr hWnd, UInt32 dwState);

4 [DllImport("coredll.dll")]
5 public static extern UInt32 SetWindowLong(IntPtr hWnd, int nIndex, UInt32 dwNewLong);

7 [DllImport("coredll.dll")]
8 public static extern UInt32 GetWindowLong(IntPtr hWnd, int nIndex);

SHDoneButton--窗体为OK时,调用此方法即可.
GetWindowLong--获得指定窗口的信息
SetWindowLong--设置指定窗口的信息,这2个方法结合起来用,才能隐藏X按钮

具体使用

 1 public const UInt32 SHDB_SHOW = 0x0001;
 2 public const UInt32 SHDB_HIDE = 0x0002;
 3 public const int GWL_STYLE = -16;
 4 public const UInt32 WS_NONAVDONEBUTTON = 0x00010000;
 5 
 6 /// <summary>
 7 /// 隐藏OK按钮
 8 /// </summary>
 9 /// <param name="hWnd"></param>
10 public static void HideDoneButton(IntPtr hWnd)
11 {
12     SHDoneButton(hWnd, SHDB_HIDE);
13 }
14 
15 /// <summary>
16 /// 隐藏X按钮
17 /// </summary>
18 /// <param name="hWnd"></param>
19 public static void HideXButton(IntPtr hWnd)
20 {
21     UInt32 dwStyle = GetWindowLong(hWnd, GWL_STYLE);
22 
23     if ((dwStyle & WS_NONAVDONEBUTTON) == 0)
24         SetWindowLong(hWnd, GWL_STYLE, dwStyle | WS_NONAVDONEBUTTON);
25 }

在实际调用时,只要将窗体的Handle作为参数传入即可.

隐藏按钮后,如何打开?
只需要设置窗体的MinimizeBox属性即可.想显示OK,设为False.想显示X,设为True即可.

显示效果:
显示OK按钮

显示X按钮

隐藏按钮

代码下载:DeviceTechDemo.rar

运行环境:VS2008 + WM6.0 + .net cf3.5

Author:AppleSeeker(冯峰)
Date:2009-2-2

文章导读:移动开发索引贴

.Net Compact Framework 小技巧(1)相关推荐

  1. DotNet Framework 小技巧

    序列化类到Xml using System; using System.Collections.Generic; using System.Text; using System.Xml.Seriali ...

  2. sql server 小技巧(8) visual studio 2013里使用Sql server compact 4.0及发布问题处理

    1. 安装 Microsoft SQL Server Compact 4.0 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id ...

  3. Microsoft .NET Compact Framework 开发常见问题解答

    这个 FAQ 有部分是通过编辑公共 .NET Compact Framework 新闻组 (microsoft.public.dotnet.framework.compactframework) 贴出 ...

  4. Microsoft .NET Compact Framework 开发常见问题解答 - 专注.NET技术及其相关应用开发! - 博客园...

    Microsoft .NET Compact Framework 开发常见问题解答 发布日期: 3/30/2005 | 更新日期: 3/30/2005 Microsoft .NET Compact F ...

  5. VC小技巧(三)视图

    VC小技巧(三)视图 1. 如何得到视图指针 [ 问题提出] 现在你有一个多线程的Demo, 你想在多线程里处理视图指针里的函数, 我们给这个函数起个名字:Put(); 该如何实现呢? // 有两种方 ...

  6. [原]Console小技巧——Console版贪食蛇

    这一篇是我的Console小技巧的最后一篇文章,以下是索引: 1.[原]Console小技巧--七彩输出 2.[原]Console小技巧--字符涂鸦 3.[原]Console小技巧--Console版 ...

  7. 抄袭一些别人工作中的小技巧

    1-类型强制转换 1.1 字符串转整形 '32' * 1 // 32 'ds' * 1 // NaN null * 1 // 0 undefined * 1 // NaN 或者 + '123' // ...

  8. 10个小技巧助您写出高性能的ASP.NET Core代码

    今天这篇文章我们来聊一聊如何提升并优化ASP.NET Core应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧! 我们都知道性能是公共网 ...

  9. .net Compact Framework 程序设计起步(智能设备的程序设计)

    什么是智能设备?PDA,SmartPhone等MS一系列与手持设备相关的产品都可以叫做智能设备. 可以有很多方法开发与设计PDA等智能设备的程序,这里只讨论.net Compact Framework ...

最新文章

  1. Hive JDBC:Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”
  2. 超实用!VLAN、TRUNK、VLAN间路由基础
  3. 计算机老师开场白试讲视频,教师招考试讲模版之开场白
  4. Silverlig“.NET研究”ht性能优化纪要
  5. flask-admin初次使用遇到的几个小问题(显示对象内存地址,编辑无法正确跳转)
  6. 异常Exception(Java)
  7. 在chrome中通过getComputedStyle()获取透明度的问题
  8. JVM到底怎么进行类加载器的呢?
  9. 分析mrp主要应用范围_MRP软件行业现状调研分析及发展趋势预测报告(2020)
  10. 计算机硬盘模式,详细教你bios设置硬盘模式
  11. 搜狗推送工具之泛站程序实现泛收录
  12. Python实验报告
  13. 消灭星星android,消灭星星安卓版
  14. 好用的便签APP排行榜前十名?
  15. Origin绘制双x,y轴图像
  16. office在线预览 word在线预览 .net在线预览 文件在线浏览接口
  17. 网易云音乐(移动端)
  18. 矩阵分析之Householder Reduction
  19. 学IT,看教程,看视频,你必须知道的学习网站
  20. TiDB 报错: GC life time is shorter than transaction duration

热门文章

  1. hpg8服务器系列指示灯意思,HP Proliant GEN8服务器指示灯说明
  2. Java编写抓取用户信息代码_[代码全屏查看]-一个基于JAVA的知乎爬虫,抓取知乎用户基本信息...
  3. 神策营销云:「在线教育」行业,如何借“运营工具”玩转微信生态?
  4. B2B 企业如何高效获客增长?
  5. 十周年“设计大佬”首谈行业变革:数据驱动超过 10% 的业绩增长
  6. 早期的增长黑客 PayPal 如何在2000年初达到每日7%到10%的营收成长?
  7. 物流链云平台云ROS——看得见的成本节约
  8. Hyper-V群集对群集复制
  9. 微信中H5同层Video播放器接入教程
  10. 从客户端中检测到有潜在危险的request.form值