如何使 RichTextBox 具有平面外观?
我正在开发一个 WinForms SmartClient 应用程序,该应用程序使用大量 RichTextBox 控件 - 由于各种原因,其中一些控件代替了常规 TextBox。 不幸的是,RichTextBox 绘制了丑陋的 Win95 3D 边框,而不是主题 XP 或 Vista 样式边框。
有谁知道如何将主题边框应用于 RichTextBox? 我不介意为此目的对它们进行子类化。
谢谢!
I'm working on a WinForms SmartClient application, which uses a lot of RichTextBox controls - some in place of the regular TextBox for various reasons. Unfortunately the RichTextBox draws the ugly Win95 3D border instead of the themed XP or Vista style border.
Does anyone know of a way to apply the themed border to the RichTextBox? I don't mind subclassing them for this purpose.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这确实是一种黑客攻击,但您可以做的一件事是将面板控件拖放到页面上。 将它的 BorderStyle 设置为 FixSingle(默认情况下为 None。)
将 RichTextBox 放入面板中,并将 BorderStyle 设置为 none。 然后将 RichTextBox 的 Dock 属性设置为 Fill。
这将为您提供一个具有平坦边框的 RichTextBox。
This is really a hack but one thing you can do is drop a Panel control onto the page. Give it a BorderStyle of FixedSingle (it will be None by default.)
Drop your RichTextBox into the panel and set the BorderStyle to none. Then set the Dock property of the RichTextBox to Fill.
This will give you a RichTextBox with a flat border.
以前,我必须使用一个面板来解决这个问题,其中文本框是内部的一个组件,并将 DockPadding 设置为 3 或 4 像素。 然后我将该面板的样式设置为单个像素。
我一直觉得这真的很烦人!
Back in the day I had to solve this with a panel where the text box is a component inside and had DockPadding set to 3 or 4 pixels. I'd then style that panel to a single pixel.
I always found this really annoying!
这是 VB.NET 代码,它将非客户区域填充为 -1,然后用蓝色填充非客户区域。 可以使用 SharpDevelop 4.4 将其转换为 C#。 我从这篇文章中导出了代码:
http ://www.codeproject.com/Articles/13723/Themed-RichTextBox-A-RichTextBox-with-XP-styled-bo
Here is VB.NET code, it inflates the nonclient area with -1 and then fills the nonclient area with caded blue. It can be converted to C# using SharpDevelop 4.4. I derived the code from this article:
http://www.codeproject.com/Articles/13723/Themed-RichTextBox-A-RichTextBox-with-XP-styled-bo
我想这有点太晚了,但尽管如此。
您始终可以使用 P/Invoke 并使用 UXTheme API 子类化您的 RichEdit,这样您就可以根据需要禁用/启用它。
我认为 CodeProject 有一个使用 UXTheme/Visual Styles API
随着 Windows 8 的推出,视觉样式 UXTheme API 可能会过时或弃用
I guess this is a little too late, but nonetheless.
You can always use P/Invoke and subclass your RichEdit with UXTheme API that way you can disable/enable it as you wish.
I think CodeProject had an richedit control which used UXTheme/Visual Styles API
Visual Styles UXTheme API may become obsolete or deprecated as Windows 8 is rolling out
[另一个黑客 (VB.NET)] 创建标签并添加代码:
希望有帮助
文森佐
[Another Hack (VB.NET)] Create a Label and Add Code:
Hope it helps
Vincenzo
摆脱 3D 边框的最简单方法是设置另一个边框:
FixedSingle
-BorderStyle 最接近例如 Button 的FlatStyle
The easiest way to get rid of the 3D-border is to set another one:
The
FixedSingle
-BorderStyle is the closest to theFlatStyle
of e.g. Button