- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在 VS2010 (.NET 4.0) 中开发 WinForms MDI 应用程序,我只是讨厌 MDI 父窗体中的 3D 边框。
关于如何移除它(使其平坦或完全没有边框)有什么想法吗?
最佳答案
我知道这是一篇旧文章,但我花了一些时间和精力从互联网上的片段中找出 3D 边框的东西(因为我也需要它),包括:
Elements from Jacob Slusser's page at codeproject.com (Accessed 1st Aug'12)
所以这里是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MDITest
{
public static class MDIClientSupport
{
[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", ExactSpelling = true)]
private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
private const int GWL_EXSTYLE = -20;
private const int WS_EX_CLIENTEDGE = 0x200;
private const uint SWP_NOSIZE = 0x0001;
private const uint SWP_NOMOVE = 0x0002;
private const uint SWP_NOZORDER = 0x0004;
private const uint SWP_NOREDRAW = 0x0008;
private const uint SWP_NOACTIVATE = 0x0010;
private const uint SWP_FRAMECHANGED = 0x0020;
private const uint SWP_SHOWWINDOW = 0x0040;
private const uint SWP_HIDEWINDOW = 0x0080;
private const uint SWP_NOCOPYBITS = 0x0100;
private const uint SWP_NOOWNERZORDER = 0x0200;
private const uint SWP_NOSENDCHANGING = 0x0400;
public static bool SetBevel(this Form form, bool show)
{
foreach (Control c in form.Controls)
{
MdiClient client = c as MdiClient;
if (client != null)
{
int windowLong = GetWindowLong(c.Handle, GWL_EXSTYLE);
if (show)
{
windowLong |= WS_EX_CLIENTEDGE;
}
else
{
windowLong &= ~WS_EX_CLIENTEDGE;
}
SetWindowLong(c.Handle, GWL_EXSTYLE, windowLong);
// Update the non-client area.
SetWindowPos(client.Handle, IntPtr.Zero, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
return true;
}
}
return false;
}
}
}
在表单加载事件中调用:
form.SetBevel(false);
不要忘记更改命名空间并记住这是一个扩展方法,但它可以更改为只是另一个类或您的 MDI 父窗体中的方法调用。
关于c# - 如何从 MDI 父窗体的 MDIClient 组件中删除 3d 边框(凹陷)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7752696/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在开发一个 .NET C# 应用程序,它有一个主窗体,它是 MDI 容器。当用户最大化 MDI 子项时,Windows 会在容器窗体的标题栏下方绘制一个控制条,其中包含子项的图标和右侧的系统按钮。
我有一个用 Delphi 2006 编写的 MDI 应用程序,它以默认主题运行 XP。 有没有办法控制 MDI 子项的外观以避免每个窗口上出现 XP 风格的大标题栏? 我尝试将 MDIChildren
我有一个包含面板的 MDI 父窗体。该面板包括图表和一些其他用户信息。当我从菜单中打开一个窗体时,新打开的窗体显示在 MDI 父面板下。如何显示所有 MDI 父控件上方的子窗体。我正在使用以下代码打开
我有一个 MDI 父窗体,它在运行时创建许多 MDI 子窗体。有没有一种聪明的方法可以在父级内部平均分配这些表格?有什么想法吗? 提前致谢! 最佳答案 **ArrangeIcons** chi
我想知道如何加载子表单,使其大小覆盖整个 MDI 父级的 MDI 容器空间(深灰色的东西)?将子窗体的 WindowState 设置为最大化不是一个选项,因为它也会最大化任何其他窗体。有建议吗? 最佳
我已经创建了一个父表单并为此引发了 ControlAdded 事件。并且还将此父窗体的属性 IsMdiContainer 设置为 true。然后,如果我创建一个名为 ChildForm1 和 Chil
我希望 MDI 父级自动调整子窗体的大小,使其在没有滚动条的情况下适合内部。有人可以提供一些代码吗? 我用它来区分父项和子项的大小,并将其添加到父项的大小,这样我就可以合身了。但它太手动了,制作时间太
我正在打开另一个 MDI 子窗体的 MDI 子窗体,它正在工作,但现在我必须以相同的方式关闭它,但没有任何反应。 这是我正在使用的代码示例: private void checkbox1_Checke
是否可以这样做,如果可以,怎么做? 我的应用程序的屏幕截图 最佳答案 您需要设置 AllowMerge property MenuStrip 的 false。 这将使子窗体上的 MenuStrip 保
我有一个带有多个子项的 MDI 表单,当我最大化一个 MDI 子项时,它会自动最大化所有子项。 我不想使用设置最大大小或设置最小大小属性。有什么办法可以防止mdi child 的这种行为吗? 最佳答案
我正在制作一个小型企业应用程序,我想知道最好的界面是什么。该应用程序本身就是您的普通服务票务跟踪器。将有用于搜索工单(带有结果网格)、创建新的勾选和查看现有工单、管理一些管理内容(用户、一些分类器等)
您好,我想打开来自 MDI Parent 的表格。 如果 For 已经打开,那么它应该被激活或打开新表格..现在我正在使用 foreach 循环。但我不想使用循环。 foreach (Form frm
我有一个 MDI 主窗体,一个显示子窗体的菜单项(我们称它为 frmEmployees),在这个窗体中有一个 Button (btnNew...) , 我如何从这里打开一个对话框 (frmNewEmp
我试图在 MDI 父级上检测我的 MDI 子级窗体何时关闭,并做出相应的 react 。在 MDI 子级关闭之前,MDI 父级不应执行任何操作。这是我的代码,我不确定我做错了什么,但是我添加的表单关闭
如何在正常创建的 MDI 窗口窗体中显示 WPF 窗体。 我们将表单创建为 MDI。增加菜单栏点击菜单会在主容器MDi窗体中显示wpf窗体。 private void newStudentToolS
我在子表单中有一个值(let CompanyId)。我想在 MDI 父窗体的级别中传递此值。 在子窗体中,我在数据 GridView 中从数据库中检索数据。现在我从数据 GridView 中选择一个值
我有一个带有此 FormClosing 事件处理程序的 MDI 父级: private void FrmMdiParent_FormClosing(object sender, FormClosing
有没有办法从用 Delphi 5 编写的 ActiveX dll 创建 MDI 子窗口,并将其嵌入到从 Delphi XE Windows 客户端应用程序创建的 MDI 父窗口中?如果没有,有没有办法
这个问题之前已经发布过,但我找不到一个好的答案。 我想在我的 WPF 应用程序中使用 MDI 子级。我希望这些 child 完全符合 WPF。 .Net WPF 不再有 MDI 子项(主窗口中的窗口)
我是一名优秀的程序员,十分优秀!