开发工程配置:
以下配置在你的项目工程里操作:
1、新建System.Resources.ResourceManager类
在项目下新建System.Resources.ResourceManager类,继承GTKSystem.Resources.ResourceManager,用于覆盖原生System.Resources.ResourceManager类。 GTKSystem.Resources.ResourceManager实现了项目资源文件和图像文件读取。 如果项目里没有使用资源图像文件,可以不用新建此文件。
2、新建System.ComponentModel.ComponentResourceManager类
在项目下新建System.ComponentModel.ComponentResourceManager类,继承GTKSystem.ComponentModel.ComponentResourceManager,用于覆盖原生System.ComponentModel.ComponentResourceManager类。
GTKSystem.ComponentModel.ComponentResourceManager实现了项目资源文件和图像文件读取(调用GTKSystem.Resources.ResourceManager)。 如果项目里没有使用资源图像文件,可以不用新建此文件。
3、GTKWinFormsApp.csproj
配置UseWindowsForms为false,目标OS设置为“(空)”,或者使用控制台应用程序(在控制台框架下会显示控制台窗口,不建议这种方式)
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0</TargetFramework> <UseWindowsForms>false</UseWindowsForms>
4、引用GTKSystem.Windows.Forms、System.Resources.Extensions
GTKSystem.Windows.Forms是必须引用
System.Resources.Extensions不是必须引用,只有VS在窗体设计器出现相关异常提示时使用
5、GTKWinFormsApp\obj\Debug\net8.0\GTKWinFormsApp.designer.runtimeconfig.json GTKWinFormsApp\obj\Debug\net8.0\GTKWinFormsApp.runtimeconfig.json 将name设置为Microsoft.WindowsDesktop.App, 用于VS支持可视化窗体设计器,重新加载工程或重启VS 如以下配置: GTKWinFormsApp.designer.runtimeconfig.json
{ "runtimeOptions": { "tfm": "net8.0", "framework": { "name":"Microsoft.WindowsDesktop.App", "version": "8.0.0" }, "additionalProbingPaths": [ "C:\\Users\\chj\\.dotnet\\store\\|arch|\\|tfm|", "C:\\Users\\chj\\.nuget\\packages", "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages", "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" ], "configProperties": { "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true } } }
GTKWinFormsApp.runtimeconfig.json
{ "runtimeOptions": { "tfm": "net8.0", "framework": { "name": "Microsoft.WindowsDesktop.App", "version": "8.0.0" }, "configProperties": { "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } }
Resources资源的使用
一、增加存放资源文件夹Resources
此目录不是必须的,只有在使用了相关资源才可能需要,具体请看下面的【全局共享资源Properties/Resources.resx】和【窗体独占资源Form.resx】的使用方法。 一般情况下,单个图片资源可以直接兼容原生使用,可以无需额外配置,图片组资源则必须把图片存放到Resources文件夹下。
在项目下和编译输出目录下创建Resources文件夹,把Resources资源存放的图片、Form.resx文件复制到Resources文件夹,此文件夹和文件全部生成到工程项目编译输出目录下。
二、使用全局共享资源Properties/Resources.resx
新建System.Resources.ResourceManager类
在项目下新建System.Resources.ResourceManager类,继承GTKSystem.Resources.ResourceManager,用于覆盖原生System.Resources.ResourceManager类。 GTKSystem.Resources.ResourceManager实现了项目资源文件和图像文件读取。 如果项目里没有使用资源图像文件,可以不用新建此文件。
新建System.ComponentModel.ComponentResourceManager类
在项目下新建System.ComponentModel.ComponentResourceManager类,继承GTKSystem.ComponentModel.ComponentResourceManager,用于覆盖原生System.ComponentModel.ComponentResourceManager类。
GTKSystem.ComponentModel.ComponentResourceManager实现了项目资源文件和图像文件读取(调用GTKSystem.Resources.ResourceManager)。 如果项目里没有使用资源图像文件,可以不用新建此文件。
三、使用窗体独占资源Form.resx
新建System.ComponentModel.ComponentResourceManager类
在项目下新建System.ComponentModel.ComponentResourceManager类,继承GTKSystem.ComponentModel.ComponentResourceManager,用于覆盖原生System.ComponentModel.ComponentResourceManager类。
GTKSystem.ComponentModel.ComponentResourceManager实现了项目资源文件和图像文件读取(调用GTKSystem.Resources.ResourceManager)。 如果项目里没有使用资源图像文件,可以不用新建此文件。
由于GTKSystem无法读取图片组(ImageList),需要把图片组的图片存入到项目的Resources文件夹下,如:
Form2.Designer.cs的配置程序如下: imageList1.ImageStream = (ImageListStreamer)resources.GetObject("imageList1.ImageStream"); imageList1.TransparentColor = System.Drawing.Color.Transparent; imageList1.Images.SetKeyName(0, "010.jpg"); imageList1.Images.SetKeyName(1, "timg2.jpg"); 那么需要把图片010.jpg和timg2.jpg复制到文件夹Resources或Resources/imageList1。