# GTKSystem.Windows.Forms
**Repository Path**: XU0904/gtksystem-windows-forms
## Basic Information
- **Project Name**: GTKSystem.Windows.Forms
- **Description**: C#桌面应用程序跨平台(windows、linux、macos)界面开发组件,基于GTK组件开发,该组件的核心优势是使用C#的原生winform表单控件窗体设计器,相同的属性方法,C#原生开发即可,无需学习。一次编译,跨平台运行。
便于开发跨平台winform软件,便于将C#升级为跨平台软件。
- **Primary Language**: C#
- **License**: LGPL-3.0
- **Default Branch**: net8版
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 88
- **Created**: 2024-03-27
- **Last Updated**: 2024-03-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# GTKSystem.Windows.Forms
#### 介绍
**Visual Studio原生开发,无需学习,一次编译,跨平台运行**.
C#桌面应用程序跨平台(windows、linux、macos)界面开发组件,基于GTK组件开发,该组件的核心优势是使用C#的原生winform表单控件窗体设计器,相同的属性方法,C#原生开发即可,无需学习。一次编译,跨平台运行。
便于开发跨平台winform软件,便于将C#升级为跨平台软件。
作者博客请看 [https://www.cnblogs.com/easywebfactory/p/17803567.html](https://www.cnblogs.com/easywebfactory/p/17803567.html)
目前功能持续更新中,将优先完善常用功能。
#### 软件架构
使用GTK3.24.24.95作为表单UI重写C#的System.Windows.Forms组件,在应用时,兼容原生C#程序组件。
#### 安装教程
1. 把项目工程改为配置UseWindowsForms为false或“控制台应用程序”,框架.net6或以上版本
2. NulGet安装GtkSharp(3.24.24.95)、GTKSystem.Windows.Forms,或引用GTKSystem.Windows.Forms.dll
3. 检查form表单是否有使用图像资源,如使用需新建System.Resources.ResourceManager和System.ComponentModel.ComponentResourceManager,具体请看下面内容。
4. 按默认配置编译发布测试运行
5. linux和macos上执行命令:dotnet demo_app.dll
(注:如果出现打开visual studio的Form窗体设计器出现“设计器”相关异常,可自建一个空类,命名为System.Resources.Extensions.dll,引用)。
#### VisualStudio插件安装
下载本插件工具,关闭visual studio,直接双击GTKWinformVSIXProject.vsix文件安装
插件会安装两个功能,都是在右键菜单和工具菜单上添加:
1、新建项的Form窗体模板
2、菜单增加设置/修复窗体设计器

#### 使用说明
以下配置在你的项目工程里操作:
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设置为“(空)”,或者使用控制台应用程序
```
false
```
4、引用GTKSystem.Windows.Forms、System.Resources.Extensions
GTKSystem.Windows.Forms是必须引用
System.Resources.Extensions是空程序dll,不是必须引用,只有VS在窗体设计器出现相关异常提示时使用
5、GTKWinFormsApp\obj\Debug\net6.0\GTKWinFormsApp.designer.runtimeconfig.json
GTKWinFormsApp\obj\Release\net6.0\GTKWinFormsApp.designer.runtimeconfig.json
将name设置为Microsoft.WindowsDesktop.App, **用于VS支持可视化窗体设计器,重新加载工程或重启VS**
```
"runtimeOptions": {
"framework": {
"name": "Microsoft.WindowsDesktop.App"
},
```
#### demo效果

#### 工具栏菜单

#### 窗口背景

#### 交流/合作/商务/赞助
QQ群:236066073
邮箱:438865652@qq.com
#### 参与贡献
1. https://gitee.com/easywebfactory
2. https://github.com/easywebfactory
#### 更新日志
## 2024/3/19
1. panel内容溢出显示滚动条,窗口缩放程序优化
## 2024/3/14
1. 修正TreeView数据程序加载
## 2024/3/6
1. 修正一些窗口配置问题、binding
## 2024/3/2
1. 修正label文本的字体大小问题、增加对齐属性
2. 实现imagelist兼容使用窗体设计器
## 2024/2/29
1. grahpics增加曲线和多边形绘图,优化文字绘图程序
2. 修正一些隐性异常
## 2024/2/23
1. 实现和修正DataGridView单元控件数据编辑、取数功能