【发布时间】:2010-11-16 13:02:43
【问题描述】:
对于我正在开发的一个小程序,我决定最好实现一个快速访问工具栏(比如那些带有功能区控件的工具栏(Office 2007、2010?))。 现在我的问题是我找不到可以从中提取工具栏的winforms的任何免费功能区控件。
我目前有一个伪 QAC,但标准工具栏存在渲染问题。
那么任何人都可以向我展示此控件的良好实现吗?它必须独立于操作系统。 (没有删除仅 DWM 的非客户端。)
对于其他人,这是我的结果:
在一个新表单中,我添加以下代码:
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams; // Retrieve the normal parameters.
cp.Style = 0x40000000 | 0x4000000; // WS_CHILD | WS_CLIPSIBLINGS
cp.ExStyle &= 0x00080000; // WS_EX_LAYERED
cp.Parent = GetDesktopWindow(); // Make "GetDesktopWindow()" from your own namespace.
return cp;
}
}
然后放置一个由 Cody Gray 提供的样式的工具箱,我总是用它的所有者移动这个表单,现在我有了一个快速访问工具栏! :D
【问题讨论】:
-
如果您正在寻找不需要在非客户区绘图的解决方案,为什么不直接使用
ToolStrip控件来创建标准工具栏?也许您可以详细说明您遇到的“渲染问题”? -
好的,当鼠标悬停在工具栏项目上时,一个带有较暗边框的蓝色矩形会放在它前面。使用我的解决方案,该矩形的下边框是不可见的,因为它位于面板下方。
-
您是否尝试过更改控件的 z 顺序?您可以将面板放在工具栏后面。
-
工具栏位于面板内,因此我可以隐藏它的下部,即一条白线。 (总是与背景颜色不同,所以我不能让它透明)
-
你真的沉迷于这种疯狂的浮动表单方法不是吗!
标签: .net winforms toolbar ribbon