介绍 GTK#

C# Winform跨平台大揭秘:从Windows独苗到三大系统通吃!GTK#框架这样玩转多平台! 摘要: 本文详细介绍了如何利用GTK#框架实现C# Winform应用的跨平台开发。通过7个关键步骤:环境准备(安装.NET与GTK#)、项目创建、代码编写(示例含窗体与按钮交互)、跨平台编译、原理解析(GTK+与C#绑定机制)、常见问题排查及进阶技巧(主题定制/控件扩展),开发者可将Windows专属的Winform应用无缝迁移至Linux/macOS平台。文章采用生动比喻(如"魔法钥匙""翻译官")解析技术原理,并强调运行时依赖与权限配置等实战要点,为C#开发者提 阅读详情

介绍 GTK#

 

[

纯Windows 用户就可以跳过。

也未测试。

]

GTK# 是对流行的跨平台图形用户界面库(GUI)GTK+ 的包装。如果打算构建一个本地应用程序,并想让它运行在非 Windows 平台上,GTK 可能是一个合理的选择。GTK# 的运行类似于 Windows 窗体和 WPF,在 GTK# 中,窗口是基于 Gtk.Window 的,小插件(widgets,相当于控件)是基于 Gtk.Widget 类的。

GTK# 是随 Mono 项目一同发布的,因此,想使用它的最好方法是安装 Mono(http://www.go-mono.com/mono-downloads/download.html)。组成 GTK# 的类分成了四个部分:atk-sharp.dll、gdk-sharp.dll、glib-sharp.dll和 gtk-sharp.dll,要运行本节的示例,需要引用这些 .dll。

在创始 GTK# 小插件之前,必须调用Application.Init() 对 GTK 环境进行初始化;在控件可见之后,要调用 Application.Run() 方法启动事件循环,如果不调用这个方法,窗口和小插件就不会响应用户的单击和其他输入;用户关闭所有的窗口时,需要调用Application.Quit() 关闭事件循环。在这个 GTK# 示例(清单 8-9)中,只有一个窗口,因此,当这个窗口关闭时,就可以退出 GTK 环境了:

 

// close the event loop when the windowcloses

win.Destroyed.Add(fun _ ->Application.Quit())

 

使用叫 HBox 或 VBox 的小插件来布局 GTK# 应用程序,这些小插件与 Windows 的类不一样,它可以包含不止一个小插件,排列的方式既可以是水平的,也可以是垂直的。在波音 8-9 中,我们创建了一个 VBox,表示其中的小插件是水平布局的:

 

// create a new vbox and add the subcontrols

let vbox = new VBox()

vbox.Add(label)

vbox.Add(button)

 

清单 8-9 是完整的示例,代码的运行结果产生图像如图 8-10 所示。

 

open Gtk

 

let main() =

  // initalize the GTK environment

  Application.Init()

 

  // create the window

  let win = new Window("GTK# and F# Application")

  // set the windows size

  win.Resize(400, 400)

 

  // create a label

  let label = new Label()

 

  // create a button and subscribe to

  // its clicked event

  let button = new Button(Label = "Press Me!")

  button.Clicked.Add(fun _ ->

    label.Text <- "HelloWorld.")

 

  // create a new vbox and add the sub controls

  let vbox = new VBox()

  vbox.Add(label)

  vbox.Add(button)

 

  // add the vbox to the window

  win.Add(vbox)

 

  // show the window

  win.ShowAll()

 

  // close the event loop when the window closes

  win.Destroyed.Add(fun _ -> Application.Quit())

 

  // start the event loop

  Application.Run()

 

do main()

 

图 8-10 运行在 Linux 下的 GTK 应用程序

破晓之光:GTK#框架让C# WinForm程序跨平台运行的终极指南 GTK#框架的出现,彻底打破了C# WinForm只能在Windows上运行的桎梏。 阅读详情

相关推荐

C# Winform 跨平台变身?GTK# 框架的7大绝技,轻松实现Windows、Linux与macOS通吃!

GTK# 是一个基于 GTK+ 的 C# 绑定库,允许开发者使用 C# 语言开发跨平台的图形用户界面(GUI)应用程序。这意味着你可以用你熟悉的 C# 语法编写代码,并且这些程序不仅能在 Windows 上运行,还能在 Linux 和 macOS 上完美展示。通过使用 GTK# 框架,C# 开发者可以获得前所未有的灵活性,不仅能够继续享受 C# 语言带来的便利,还能轻松构建出适用于多种操作系统的桌面应用程序。

java专栏 1389

GTK#连接数据库SQLite在mono环境下的测试代码

在linux系统下配置mono环境,运行GTK#程序,经过测试可以运行。注意需要自己建立SQLite数据库

GTK#开发环境DLL库集合下载与使用指南

GTK# 是一个基于 C# 的.NET 封装库,它为 GTK+ 图形用户界面库提供了高级语言的绑定。这种集成使得 C# 程序员能够开发跨平台的桌面应用程序,同时利用 GTK+ 提供的强大功能和灵活性。是GTK#项目中的核心库,用于在.NET应用程序中创建复杂的GUI(图形用户界面)。它为.NET开发人员提供了一套丰富的控件和API,使其能够开发出与平台无关且美观的应用程序界面。

weixin_42575505的博客 783

【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用

本文是【.NET Core 跨平台 GUI 开发】系列博文的第一篇。该系列博文是一个关于 Gtk# 跨平台应用开发的初级随笔集合。该随笔集合介绍了 GTK 和 Gtk# 的基本信息以及开发方法,并展示了如何使用 .NET Core 技术栈开发基于 Gtk# 的跨平台 GUI 程序。 博文假设你已经对 C# 有一定的了解且熟悉事件驱动,所使用的电脑中已经安装好了 Visual Studio 以及 .NET Core 开发环境。如果你熟悉 WinForm 应用程序的开发,那么你将轻松不少。 1、GTK 和

精通电脑科技的博客 5054

GTK#框架让C# Winform程序跨平台运行

GTK#框架让C# Winform程序跨平台运行

寒冰屋的专栏 939

mono:第一个gtk#程序

 mono:第一个gtk#程序 目前mono还未实现System.Window命名空间下的类,不过目前有多个项目可以实现界面编程,如gtk#,Qt#,wx.net等。将来推出的mono将采用gtk#作为它的System.Window实现,我们期待着mono的下一个release,System.window、c#2.0等新特性更让人兴奋不已。 言归正传,开始我们的第一个gtk#

鸟窝 9416

GTK# 学习笔记

Choosing Gtk# or Glade#Gtk# looks like Windows Forms and Controls, and Glade# is more like WPF, it can define the widgets in a xml file,  and load it into the application.The Gtk# "Hello world"  appli...

weixin_33742618的博客 283

winform 登录页菜单怎么在一个主窗体下切换_【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用...

本文是【.NET Core 跨平台 GUI 开发】系列博文的第一篇。该系列博文是一个关于 Gtk# 跨平台应用开发的初级随笔集合。该随笔集合介绍了 GTK 和 Gtk# 的基本信息以及开发方法,并展示了如何使用 .NET Core 技术栈开发基于 Gtk# 的跨平台 GUI 程序。博文假设你已经对 C# 有一定的了解且熟悉事件驱动,所使用的电脑中已经安装好了 Visual Studio ...

weixin_39923157的博客 620

在Linux平台下使用 .NET Core技术的UI方案

MAUI 是 .NET 的跨平台 UI 框架,支持在 Windows、macOS、iOS 和 Android 上运行。你可以使用 Blazor WebAssembly 在浏览器中运行,也可以使用 Blazor Server 进行服务器端渲染。Avalonia 和 GTK# 在 Linux 上有良好的原生支持,而 Blazor 和 MAUI 更适合跨平台应用开发。Avalonia 是一个跨平台的 .NET UI 框架,支持 Windows、macOS 和 Linux。它在 Linux 上有良好的支持。

exlink2012的专栏 2767

【.NET Core 跨平台 GUI 开发】第三篇:Gtk# 表格布局与事件处理

除了使用 HBox 和 VBox 进行布局外,还可以使用 Table 对象进行布局。这个有点像 html 的 table,适合方方正正大小差不多的空间集合。本篇将会对 Table 布局进...

dotNET跨平台 2286

vba quit此文件正由另一个应用程序或用户使用_【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用...

本文是【.NET Core 跨平台 GUI 开发】系列博文的第一篇。该系列博文是一个关于 Gtk# 跨平台应用开发的初级随笔集合。该随笔集合介绍了 GTK 和 Gtk# 的基本信息以及开发方法,并展示了如何使用 .NET Core 技术栈开发基于 Gtk# 的跨平台 GUI 程序。博文假设你已经对 C# 有一定的了解且熟悉事件驱动,所使用的电脑中已经安装好了 Visual Studio ...

weixin_39612110的博客 246

gtk#】关于treeview数据绑定,选择及添加删除节点数据的备忘录

【前言】 【mono的gtk#有无法识别中文路径的bug,假如你用xamarin studio开发gtk#工程的话,我建议你将工程放到完全英文的路径下面,免却很多麻烦】 最近在搞gtk#,mono下面的一个桌面ui框架,是对gtk+的c#版本,为什么我不停去搞不同的技术呢?只因为我在找一个解决方案。 多余的不说了, 下面上代码。 【正文】 treeview的用法。 g

一名普通码农的菜地 3312

ZetCode GUI 教程(二十六)

在计算机应用中,对话框是一个窗口,用于与应用“对话”。在我们的例子中,它是退出按钮。默认情况下,鼠标跟踪是禁用的,因此,仅在移动鼠标时按下至少一个鼠标按钮时,窗口小部件才会接收鼠标移动事件。如果启用了鼠标跟踪,则即使未按任何按钮,窗口小部件也会接收鼠标移动事件。在前面的示例中,我们已将委托或方法插入事件。下一行将窗口的 x,y 坐标设置为窗口的标题。可以显示徽标,应用名称,版本,版权,网站或许可证信息。在代码示例中,我们有一个按钮和一个复选框。在上面的代码示例中,我们有一个带有三个引号的标签小部件。

龙哥盟 978
上一篇: 介绍 Windows Presentation Foundation 3D
下一篇: System.Configuration 命名空间
心想才事成
博客等级 码龄20年 104粉丝 420原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值