【问题标题】:Winforms border styleWinforms边框样式
【发布时间】:2011-08-15 09:17:21
【问题描述】:

我正在尝试制作一个带有边框的表单,类似于 Windows Vista 音量控件上的边框。表单也需要可调整大小。

谢谢,乔达梅里奥

为了更清楚地了解我在寻找什么。 这是一个将 ControlBox 属性设置为 false 的表单。

这是我正在寻找的粗略 Photoshop。

【问题讨论】:

  • 检查接受的答案Drop shadow in Winforms Controls
  • @Javed Akram 虽然这很有趣并且我在最终答案中发挥了作用,但这并不是完整的画面。
  • 您可以使用 Spy++ 查看混音器弹出窗口应用了哪些样式,然后尝试在您的 CreateParams 中设置相同的样式
  • 明天我可以访问我的开发机器时我会尝试。
  • 不幸的是,我的开发机器有很多问题,而且我认为上面有一些讨厌的 rootkit。我重新安装了操作系统,它卡住了!一定是藏在我的 linux 驱动器上!不用说,我在这方面的工作将被搁置,直到我能解决这个问题。开学可能需要几天时间。 :(

标签: vb.net winforms formborderstyle


【解决方案1】:

设置表格.Controlbox=False
设置表格.Text=""

完成。

【讨论】:

  • 我可以相信我没有想到setting Text=""。如果是这样,我会踢自己。正如我上面的评论所说,我可能需要几天的时间才能对此进行测试。
  • 不要用力踢自己。 ;)
【解决方案2】:

您可以在您的 Projectsettigs 中启用“启用 XP-Visual Style”。 如果你现在启动你的应用程序,你应该有启动操作系统的默认边框样式

【讨论】:

  • 我的意思是去掉顶部的栏和最大化、最小化和关闭按钮。
【解决方案3】:

尝试将FormBorderStyle 设置为None or Fixed(3D|Single) 并从那里开始工作,也许。

或者,将ControlBox 设置为False 也应该具有隐藏标题栏的效果。但是,请注意表单不会自动更新:

如果将 ControlBox 设置为 false,并且还设置了 Location 属性,则 Form 的 Size 属性将不会更新以反映窗体的非客户区已被隐藏。 要解决此问题,请将更改 Location 属性的代码放到 HandleCreated 事件中。

【讨论】:

  • 即使这样做了,顶部栏(任务栏?)仍然存在。
  • @giodamelio 我已经有一段时间没有使用 WinForms(在 Vista 之前),但至少使用 None 作为边框样式,根本不应该有非客户区,因此没有标题栏.
  • 没错,但我又遇到了绘制边框和阴影的问题。
  • @giodamelio 查看我对ControlBox 属性的补充说明。
  • @Konrad Rudolph 将Controlbox 属性设置为False 会删除最大化、最小化和关闭按钮,但实际上并未删除顶栏本身。我的第二张图片是ControlBox=False,如您所见,顶部栏仍然存在。
【解决方案4】:

通过以下步骤实现此目的的一种方法:

  • FormFormBorderStyle 设置为None

  • 获取PictureBox,将其Dock 属性设置为Fill

  • 获取包含边框的图像,并将此 Image 设置为 PictureBox。

【讨论】:

  • 这是一个很酷的技巧,而且比我想象的更开箱即用。这里(gyazo.com/01a132bd42e4bce1eb49780aece50619.png)是它的截图。不过,我需要该表单不可调整大小。
  • @giodamelio,通过将FormBorderStyle 设置为 NONE,表单将无法调整大小。
  • 我忽略了这个事实。这是这个解决方案对我不起作用的另一个原因。
  • 如果你想用鼠标调整表格大小并移动,我会尽快给你一个链接.....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
相关资源
最近更新 更多