当前位置: 首页 > news >正文

.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms

前言

今天大姚给大家分享一个.NET开源、跨平台桌面和移动应用的统一框架:Eto.Forms。

项目介绍

Eto.Forms是一个.NET开源、跨平台的桌面和移动应用的统一框架,该框架允许开发者使用单一的UI代码库构建在多个平台上运行的应用程序,并利用各自平台的原生工具包,从而使应用程序在所有平台上看起来和工作都像原生应用一样。

支持的平台

支持Windows Forms、WPF、MonoMac和GTK#等桌面平台,以及正在开发中的iOS(使用Xamarin.iOS)和Android(使用Xamarin.Android)移动平台支持(尽管目前尚不完整)。

在WinForms中快速使用

创建WinForms应用

创建一个名为:EtoFormsExercise的WinForms应用:

 

7775c687a4b10bfcb0da2642758a819c.png

 

aca16f94d49d8d39a791c6df4fab4344.png

 

0168756dbccbeb2ad2eaefc809090553.png

安装 Eto.WinForms Nuget包

在Nuget包管理器中搜索:Eto.WinForms进行安装:

 

9251596d32d158898f9e19441abf6d53.png

初始化 Eto.Forms 应用程序

Program.cs中编写代码来初始化 Eto.Forms 应用程序,并设置主窗体。这通常涉及到创建一个继承自 Eto.Forms.Form 的类,并在其中定义界面元素。

using Eto.Forms;
using Application = Eto.Forms.Application;
using Button = Eto.Forms.Button;
using Form = Eto.Forms.Form;
using Label = Eto.Forms.Label;namespace EtoFormsExercise
{class Program{[STAThread]static void Main(){new Application(Eto.Platforms.WinForms).Run(new MainForm());}}public class MainForm : Form{private TextArea textArea;public MainForm(){Title = "My EtoForms Exercise";ClientSize = new Eto.Drawing.Size(800, 600);// 创建按钮  var button = new Button { Text = "Click Me" };button.Click += Button_Click;// 创建文本区域  textArea = new TextArea{Size = new Eto.Drawing.Size(600, 300)};// 创建布局  var layout = new StackLayout{Padding = 10,Spacing = 10,Items ={new Label { Text = "Hello, My EtoForms Exercise!" },button,textArea}};Content = layout;}private void Button_Click(object sender, EventArgs e){// 当按钮被点击时,更新文本区域的内容textArea.Text += "DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。";}}
}

演示效果:

 

28d1ccd4907e48479f8726ff077c1674.png

框架源代码

 

17192dd3020974609e1de1b0af311fb1.png

对应平台运行截图

Windows

 

851f97ce95114f85e11fbeca525f27e5.png

Mac

 

484f7674b3619375bb05ac796dddb63f.png

Linux

 

1f81fe9f8d2b3924fcf6f7804cfa27f2.png

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

  • 开源地址:https://github.com/picoe/Eto

  • 本文示例源码:https://github.com/YSGStudyHards/DotNetExercises/tree/master/EtoFormsExercise

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

  • GitHub开源地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

  • Gitee开源地址:https://gitee.com/ysgdaydayup/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

 


http://www.mrgr.cn/news/42976.html

相关文章:

  • 殷人昆教授带头节点单链表
  • C++ 语言特性22 - 三向比较
  • Java后端开发中的数据保护:如何实现全面的数据加密
  • 计算机组成原理之无符号整数的表示和运算
  • C++ 语言特性21 - 别名模板
  • 【C++差分数组】2381. 字母移位 II|1793
  • 探索Python的魔法:标准库与第三方库的奇妙世界
  • Chat登录时出现SSO信息出错的解决方法
  • 随时随地,轻松翻译:英汉互译软件的便捷之旅
  • HTML ASCII:Web 开发中的字符编码基础
  • 业务封装与映射 -- 编码方式(QPSK、DQPSK、QAM)
  • 腾讯自研Git客户端,助力每个人都可以轻松使用Git
  • Bootstrap 5 网格系统
  • 15分钟学 Python 第37天 :Python 爬虫入门(三)
  • 污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。
  • Java中的数据格式转换:JSON、XML与Protobuf的应用与选择
  • 用Python实现运筹学——Day 12: 线性规划在物流优化中的应用
  • 解决:__init__() got an unexpected keyword argument ‘logging_dir‘
  • 方法重写与多态
  • spring boot jar 分离自动部署脚本