c# - 如何在 .NET 中创建非 OwnerDraw 按钮?

标签 c# .net c++ ownerdrawn

我正在为一个软件创建一个插件,该插件可以为我创建的表单设置皮肤。但是,按钮不是基于它们的皮肤,而是显示标准的灰色按钮。在软件论坛上询问指出 .NET 表单控件是所有者绘制的,因此我的按钮不会以正确的样式重绘,而是创建一个非所有者绘制的按钮。

system.windows.forms 命名空间中的所有控件似乎都是所有者绘制的。

那么如何在 .NET 中创建标准的 C++ PUSHBUTTON?

如果有帮助,目前正在使用 C# 编码。

谢谢

最佳答案

Windows.Forms 中的控件不是所有者绘制的,而是系统绘制的。这就是 Windows 默认绘制它们的方式,无论是按钮、文本框还是其他什么。您可以通过指定控件应该是所有者绘制的(即:您负责绘制它)来覆盖绘图 - 一些控件支持,其中一些甚至具有更精细的粒度(请参阅 ListView),或者您可以在任何 Control 后代的 OnPaint 事件中完全覆盖绘画。

您的问题相当令人困惑 - 据我所知,您在插件中创建的按钮没有蒙皮。显然,您需要的是告诉此蒙皮框架绘制这些按钮。可能有或应该有一些组件,您可以将其放入您调用的插件表单或方法中,将蒙皮绘制例程注入(inject)您的插件。

关于c# - 如何在 .NET 中创建非 OwnerDraw 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/346750/

相关文章:

c# - 在 C# 中使用 UpdateResource?

c++ - MAX_PATH 是否总是相同大小,即使定义了 _UNICODE 宏?

c++ - 使用 PID 跟踪父进程并显示它的子进程和孙进程 PID

c++ - 构建模板类型的编译时列表?

C# - 确定用户是否在 AD 中处于事件状态

c# - 无法在 WPF 中设置 DialogResult

c# - 将对象传递给 jint 中的函数并返回值

c# - PHAntom JS 有 50% 的时间失败

c# - HashSet 允许重复项插入 - C#

c# - 为异步方法添加同步缓存机制 "transparently"