我正在 MS Windows 上使用 Xamarin Studio 5.4 编写 GTK Sharp (v2.12) 应用程序。安装的Mono版本是3.2.3(但我使用.Net工具链进行编译,因为Xamarin不允许我使用Mono工具链进行编译)。
情况是,当我从 Xamarin Studio 或使用 Mono 运行应用程序时,我有一个相对不错的外观和感觉,但是当我使用 .Net 运行应用程序(双击可执行文件)时,外观和感觉是可怕。
我试图欺骗应用程序加载一个像样的主题...但是当我从 .Net 执行此操作时它什么也没做(但是当我使用 Mono 时很容易看到更改)。
这是我尝试过的代码,但不起作用(我有 GTK 主题 rc 文件的本地副本):
// It works on Mono, but not on .Net
Gtk.Rc.Parse("Resources/GTK/windows-theme.gtkrc");
我也尝试过这样做:
// This does not work at all (on MS Windows)
Gtk.Settings.Default.ThemeName = "MS-Windows";
但这并没有改变任何东西,即使使用 Mono 引擎也是如此。
这是使用 Mono 的应用程序的外观:
以及它在 .Net 引擎下运行的样子:
感谢您的关注 :) 。
好吧,我找到了问题的答案:D。
我没有尝试加载特定的GTK主题,而是解决了它以使.Net正常工作,而无需复制程序目录中的所有DLL文件。
我在 Xamarin 开发论坛中找到了这个帖子:
- http://forums.xamarin.com/discussion/15568/unable-to-load-dll-libgtk-win32-2-0-0-dll http://forums.xamarin.com/discussion/15568/unable-to-load-dll-libgtk-win32-2-0-0-dll
在此线程中,Xamarin 开发人员解释了他们如何解决依赖项加载问题。关键是调用检查WindowsGTK之前的方法应用程序.Init()称呼。 CheckWindowsGTK 是在 Monodevelop 源文件中定义的:
- https://github.com/mono/monodevelop/blob/master/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs#L490-L490 https://github.com/mono/monodevelop/blob/master/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs#L490-L490
HINT:仅当程序在 Windows 上运行时才调用 CheckWindowsGTK 很重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)