Ubuntu20.4 Mono C# gtk 编程习练笔记(一)

简言

Mono是Linux环境下C#的开发、编译及运行环境。gtk是gnome独具特色的图形库,Mono对它进行了C#封装。Linux环境下,许多的编程语言使用gtk界面库,有比较好的编程群众基础。另外,Mono相对于DOTNET来说要轻量许多,它们有着不同的定位,未来C# xamarin.forms定位在移动设备,现在Mono的CLR已经在Android和IOS上支撑C#程序运行了。

Mono develop环境安装好后是下面的样子(具体如何安装放到最后写)

练习的功能:

Menu, CheckButton, ColorPicker, AboutDialog, RadioButton, Text entry, FontDialog, TreeView, Listbox, Combobox, Cario, async file write.

新建解决方案

起项目名称,解决方案名称,然后点击创建,生成如下的程序框架。gtk的印记还有,但已经基本上是C#形式了。编辑器的左侧是解决方案,右侧是工具箱,它旁边是选择大纲方式和相关属性等,还有单元测试。

看一下左侧的解决方案,点开后列出了引用、用户界面,主窗口.cs 和程序.cs,右键点击MainWindow.cs、再点打开方式、然后点窗口设计器。

窗体设计

类似Visual Studio,源代码和设计器在底部上方可选,右边的工具箱点击打开,gtk的插件就都出来了,设计器看上去很精巧。

从右侧的工具箱中拖个vbox到窗体上,自动成为三栏,而且都是撑开的,不是glade或wxsmith或wxformbuilder那种缩得小小的,与winform设计习惯相近。在任一栏上右键,均可添加(insert before或insert after)、删除栏目,因此属性页上不再有设置栏目的的功能。

自上至下从右侧分别拖入一个entry,一个button,再加一个button,并将vbox的homogeneous属性打勾,让vbox为widgets平均分配三栏空间。

如果让三个widget占满各自的空间,则在相应widget的属性中去掉autosize的勾,改勾选expand让它变宽,改fill让它变胖,控件就随vbox满空间变化了。

信号设置

在相应widget控件的信号处找到需要的event比如clicked,双击则自动出现处理过程名称。

如果此时到"源"页面去看,处理过程prototype已经产生了,就是左侧最下面那个onButton5Clicked。

在相应处理过程中分别填写 entry2.text = "Hello!" 和 Application.Quit(),后面都用分号结尾。在键入code的时候,有跟随提示的,直接选中回车就自动写好的。

保存一下,然后在顶部菜单上找生成-全部生成,或F8全部生成,F5调试运行。

有了设计器支持,在mono上开发c#程序就方便多了,与qt的设计器具有同样的方便性。设计器有了,接下来将操作对widgets的使用和针对gtk的C#程序编写。

相关推荐
zimoyin18 小时前
在 C# 里嵌入 JavaScript:用 Jint 做可热更新的自动化脚本(从入门到踩坑)
javascript·c#·自动化
薛定e的猫咪18 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪19 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
果壳science20 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
小羊没烦恼!20 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
大叔学Linux1 天前
FreeRTOS任务切换笔记
arm开发·笔记
别动我齐刘海1 天前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
c#上位机1 天前
C#上位机项目实战——exe项目调试更改dll中源代码
开发语言·c#
一直C1 天前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
承渊政道1 天前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp