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

【C#】跨平台创建你的WinForms窗体应用(WindowsUbuntu)

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍多平台创建你的WinForms窗体应用(Windows&Ubuntu)。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. WinForm介绍
    • :blush:2. 环境安装与配置
    • :satisfied:3. WinForms应用示例
    • :satisfied:4. VB应用示例

😏1. WinForm介绍

C# WinForms(Windows Forms)是微软提供的一种用于创建桌面应用程序的图形用户界面(GUI)框架。它基于 .NET Framework 或 .NET Core/.NET 5+,允许开发者通过拖拽控件和编写事件驱动代码快速构建 Windows 应用程序。

核心特点

  • 基于控件的开发
    WinForms 提供丰富的内置控件(如按钮、文本框、列表框等),支持通过 Visual Studio 设计器直接拖拽布局,简化界面开发流程。

  • 事件驱动模型
    用户交互(如点击、输入)触发事件,开发者只需编写事件处理逻辑(如按钮的 Click 事件),无需关注底层消息循环。

  • 数据绑定支持
    支持将控件属性(如 TextBox.Text)与数据源(如数据库、对象)绑定,实现数据自动同步更新。

  • GDI+ 图形绘制
    通过 System.Drawing 命名空间提供绘图功能,支持自定义绘制图形、文字和图像。

WinForms用微软自家的API和C#,在Windows平台的支持会好点,因此Win上的许多桌面软件都是基于Visual Studio来开发的,但它也可以跨平台(配合mono可在Linux上编译和运行)

😊2. 环境安装与配置

Windows上用VS安装使用即可,这里不再赘述。

Ubuntu上需先安装dotnet(C#语言支持):

sudo apt update
sudo apt install -y dotnet-sdk-8.0
# 验证安装
dotnet --version

然后安装mono,Mono 是较早的跨平台 .NET 实现,对 WinForms 支持较好。

sudo apt update
sudo apt install -y mono-complete
mono --version
# 编译
mcs Program.cs -r:System.Windows.Forms.dll -r:System.Drawing.dll
# 运行
mono Program.exe

在Ubuntu上创建窗体应用(两种方式):
1.直接使用dotnet,添加WinForms支持
2.基于mono来编译运行

😆3. WinForms应用示例

创建WinForms应用

dotnet new console -o WinFormsApp
cd WinFormsApp
# 添加 Windows Forms 支持
dotnet add package Microsoft.Windows.Compatibility

在这里插入图片描述

创建 Program.cs

using System;
using System.Windows.Forms;class Program
{static void Main(){Application.EnableVisualStyles();Application.Run(new MyForm());}
}class MyForm : Form
{public MyForm(){this.Text = "C# WinForms on Ubuntu";this.Width = 400;this.Height = 300;var label = new Label{Text = "Hello, C# WinForms!",Location = new System.Drawing.Point(100, 100),AutoSize = true};this.Controls.Add(label);var button = new Button{Text = "Click Me",Location = new System.Drawing.Point(100, 150)};button.Click += (sender, e) => MessageBox.Show("Button clicked!");this.Controls.Add(button);}
}

运行:dotnet run

😆4. VB应用示例

此外,mono也可以用来创建VB窗体应用。

安装:

sudo apt install mono-complete mono-vbnc
vbnc --version

在这里插入图片描述

创建 WinFormsVB.vb:

Imports System.Windows.FormsPublic Class MainFormInherits FormPublic Sub New()Me.Text = "VB WinForms on Ubuntu"Me.Width = 400Me.Height = 300Dim label As New Labellabel.Text = "Hello, VB WinForms!"label.Location = New Drawing.Point(100, 100)label.AutoSize = TrueMe.Controls.Add(label)Dim button As New Buttonbutton.Text = "Click Me"button.Location = New Drawing.Point(100, 150)AddHandler button.Click, AddressOf ButtonClickMe.Controls.Add(button)End SubPrivate Sub ButtonClick(sender As Object, e As EventArgs)MessageBox.Show("Button clicked!")End Sub
End ClassModule ProgramSub Main()Application.EnableVisualStyles()Application.Run(New MainForm())End Sub
End Module

编译运行:

vbnc WinFormsVB.vb -r:System.Windows.Forms.dll -r:System.Drawing.dll
mono WinFormsVB.exe

请添加图片描述

以上。

http://www.dtcms.com/a/331027.html

相关文章:

  • 上网行为安全概述和组网方案
  • 深入解析 HTTP 协议演进:从 1.0 到 3.0
  • 【web站点安全开发】任务4:JavaScript与HTML/CSS的完美协作指南
  • 嵌入式Linux学习-编译内核源码
  • vscode的ws环境,esp32s3连接wifi
  • 深入解析Python身份切换:安全权限管理实践指南
  • MyBatis缓存模块深度解析
  • dolphinscheduler中任务输出变量的问题出现ArrayIndexOutOfBoundsException
  • MCP和Agent之间的区别和联系
  • vercel部署上线
  • lesson38:MySQL数据库核心操作详解:从基础查询到高级应用
  • 飞算JavaAI智慧零售场景实践:从用户洞察到供应链优化的全链路技术升级
  • UniApp 中使用 tui-xecharts插件(或类似图表库如 uCharts)
  • [ HTML 前端 ] 语法介绍和HBuilderX安装
  • 通过网页调用身份证阅读器http websocket方法-湖南步联科技美萍MP999A电子————仙盟创梦IDE
  • 15 ABP Framework 开发工具
  • Transformer网络结构解析
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • CNN - 卷积层
  • MicroVM-as-a-Service 后端服务架构设计与实现
  • 使用 Docker 部署 PostgreSQL
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?
  • 基于ECharts和EdgeOne打造云上智能图表
  • 单体架构集训整理
  • css 属性@font-face介绍
  • 经典深度学习模型——LSTM【原理解释 代码(以2025年美赛C题为例)】
  • FreeRTOS-C语言指针笔记
  • 【入门级-C++程序设计:13、STL 模板:栈(stack)、队 列(queue)、 链 表(list)、 向 量(vector) 等容器】
  • gitlab的ci/cd变量如何批量添加
  • 【P81 10-7】OpenCV Python【实战项目】——车辆识别、车流统计(图像/视频加载、图像运算与处理、形态学、轮廓查找、车辆统计及显示)