做项目中间遇到了MDI窗体内边框的问题,经过苦苦寻找,最终得到了解决方案

在Main窗体中调用API

  1. // Win32 Constants
  2. private const int GWL_STYLE = -;
  3. private const int GWL_EXSTYLE = -;
  4. private const int WS_BORDER = 0x00800000;
  5. private const int WS_EX_CLIENTEDGE = 0x00000200;
  6. private const uint SWP_NOSIZE = 0x0001;
  7. private const uint SWP_NOMOVE = 0x0002;
  8. private const uint SWP_NOZORDER = 0x0004;
  9. private const uint SWP_NOACTIVATE = 0x0010;
  10. private const uint SWP_FRAMECHANGED = 0x0020;
  11. private const uint SWP_NOOWNERZORDER = 0x0200;
  12.  
  13. // Win32 方法
  14. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  15. private static extern int GetWindowLong(IntPtr hWnd, int Index);
  16.  
  17. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  18. private static extern int SetWindowLong(IntPtr hWnd, int Index, int Value);
  19.  
  20. [DllImport("user32.dll", ExactSpelling = true)]
  21. private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter,
  22. int X, int Y, int cx, int cy, uint uFlags);
  23.  
  24. 获取到API后在Form_Load事件中加入如下代码
  1. //获取mdi客户区
  2. for (int i = ; i < this.Controls.Count; i++)
  3. {
  4. var mdiClientForm = this.Controls[i] as MdiClient;
  5. if (mdiClientForm == null) continue;
  6. // 找到了mdi客户区
  7. // 取得客户区的边框
  8. int style = GetWindowLong(mdiClientForm.Handle, GWL_STYLE);
  9. int exStyle = GetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE);
  10. style &= ~WS_BORDER;
  11. exStyle &= ~WS_EX_CLIENTEDGE;
  12.  
  13. // 调用win32设定样式
  14. SetWindowLong(mdiClientForm.Handle, GWL_STYLE, style);
  15. SetWindowLong(mdiClientForm.Handle, GWL_EXSTYLE, exStyle);
  16.  
  17. // 更新客户区
  18. SetWindowPos(mdiClientForm.Handle, IntPtr.Zero, , , , ,
  19. SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
  20. SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
  21. UpdateStyles();
  22. break;
  23. }

重新运行程序,OK

Winform下去除MDI窗体边框的更多相关文章

  1. WPF 去除系统窗体边框,自定义移动窗体

    方法一: 去除系统窗体边框: <Window x:Class="PracticeProject.MainWindow" xmlns="http://schemas. ...

  2. IE7浏览器下去除flash动画边框问题

    <object width="100%" height="100%" data="/templates/default/swf/guide.sw ...

  3. C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

    一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...

  4. 小菜学习Winform(四)MDI窗体(附示例)

    前言 在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下. 简单应用 w ...

  5. Winform MDI窗体切换不闪烁的解决办法(测试通过)

    https://stackoverflow.com/questions/5817632/beginupdate-endupdate-for-datagridview-request SuspendLa ...

  6. Winform拖拽改变无边框窗体大小

    大家在进行Winform开发过程中,很容易就可以完成一个窗口的布局工作,但现在的软件界面美化效果一个比一个好,很多软件都是无边框的,于是乎,你是不是也感叹:winform的带边框的窗体如此丑陋,我一定 ...

  7. winform下自绘提示框风格窗体

    昨天分享了一个环形滚动条控件,今天分享一个提示框风格的窗体.代码如下: /// <summary> /// 继承自Form,但将FormBorderStyle设置为None /// < ...

  8. 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

    一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...

  9. WPF去除窗体边框及白色边框

    <Window x:Class="WpfAppFirst.Evaluation" xmlns="http://schemas.microsoft.com/winfx ...

随机推荐

  1. 简单的线性规划-scipy

    根据描述,我们用线性规划带约束来求解问题 # coding=utf-8 from scipy.optimize import linprog import numpy as np def maxGai ...

  2. 数据仓库搭建——Inmon与Kimball

    一.简介 1.1 历史 搞数据仓库这么久,实践中发现首先搭建数据集市,还是清洗数据之后,直接进入数据立方体(形成维度表和实施表)形成核心数据仓库层,是个选择题... 随后发现这其实涉及到了数据仓库的历 ...

  3. mysql关于char和varchar的查询效率问题

    看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试  char(100)   varcha ...

  4. GlusterFS最佳实践

    标签(linux): glusterfs 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 今天我们来从实战中学习glusterfs 环境准备: gluster-s ...

  5. records.config文件参数解释

    # Process Records Config File # # <RECORD-TYPE> <NAME> <TYPE> <VALUE (till end ...

  6. 配置redis开机自启动和监听

    redis安装好后,每次手动启动很不方便,配置开机自启动. 方法一:设置启动命令到/etc/rc.d/rc.local rc.local文件是系统全局脚本文件,会在其他开机进程脚本文件执行完毕后执行该 ...

  7. Spring Boot快速入门(最新)

    本章通过完成Spring Boot基础项目的构建并实现一个简单的Http请求处理,让大家对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性.预计阅读及演练过程将花费约5分钟. ...

  8. Spring学习之装配Bean

    通过注解配置的bean,默认是单例 @Autowired private CodeTypeService codeTypeService; 测试:在Controller层调用Service层对象Cod ...

  9. MySQL笔记-turncat、drop、delete的区别

    TRUNCATE 语法: TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]功能: 删除整个表的数据并释放空间   描述: 由于Trunca ...

  10. 使用Google Cloud Platform构建机器学习项目-宠物识别

    宠物识别我们使用到了tensorflow object-detection API  (https://github.com/tensorflow/models/tree/master/researc ...