我知道我一般应该避免弄乱这样的系统设置,但我的应用程序已经使用非标准颜色,我对此没有影响.我希望能够在某些地方添加标准.NET控件,但它们的颜色不匹配.我想有一个黑客可以替换这个应用程序的系统颜色.另一个需要注意的重要事项是它是一个.NET应用程序.
到目前为止我的(不完整)想法是:
>要创建一个代替GetSysColor的代理User32.dll库,但它将非常繁琐(731函数被重定向,1被替换)并且我不知道如何强制我的应用程序使用该特定副本.
>以某种方式拦截对GetSysColors的调用(不幸的是它在CLR的某个地方我认为).
>以某种方式修改.NET类SystemColors(在内存中?可能吗?).
你有什么想法,最好(和完整)的方法是什么?
解决方法
I would like to be able to add standard .NET controls in some places,but their colors do not match. I would like to have a hack that would replace system colors for this one application.
这就像用大锤敲钉子一样.
您可以做的是从您想要使用的每个库存控件继承一个新控件,而不是在系统内部弄清楚颜色.因此,您可以从库存TextBox控件继承而不是纯文本框来创建自己的ThemedTextBox.您设置此新控件以默认使用应用程序的颜色方案,并且因为它仍然是TextBox,就继承结构而言,您可以在任何使用普通文本框的地方使用它,包括在winforms设计器中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。