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

news2024/11/16 12:52:21

简言

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#程序编写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1390834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 使用canvas制作柱状图

效果图: 实现思路: 1、通过展示数据计算需要画几根柱子; 2、通过组件宽度、高度计算出每根柱子的宽度及高度; 3、for循环依次绘制每根柱子; 4、绘制柱子时,先绘制顶部百分比、value值,再绘制柱…

Grafana(二)Grafana 两种数据源图表展示(json-api与数据库)

一. 背景介绍 在先前的博客文章中,我们搭建了Grafana ,它是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,接下来我们重点介绍如何使用它来进行数据渲染图表展示 Docker安装G…

跟着pink老师前端入门教程-day03

6. 表格标签 6.1 表格的主要作用 主要用于显示、展示数据&#xff0c;可以让数据显示的规整&#xff0c;可读性非常好&#xff0c;特别是后台展示数据时&#xff0c;能够熟练运用表格就显得很重要。 6.2 基本语法 <!--1. <table> </table> 是用于定义表格的标…

MySQL的内部XA的二阶段提交

内部XA 可能大家一听感觉很陌生&#xff0c;什么是XA&#xff1f;XA是一种分布式事务管理规范&#xff0c;MySQL内部有一个XA事务管理器来支持分布式事务&#xff0c;可能这么一听更懵了&#xff0c;那么我这么解释一下&#xff0c;MySQL是支持主从的&#xff0c;主从分布在不…

导入失败,报错:“too many filtered rows xxx, “ErrorURL“:“

一、问题&#xff1a; 注&#xff1a;前面能正常写入&#xff0c;突然就报错&#xff0c;导入失败&#xff0c;报错&#xff1a;“too many filtered rows xxx, "ErrorURL":" {"TxnId":769494,"Label":"datax_doris_writer_bf176078-…

预处理/预编译详解(C/C++)

在上一篇的bolg中的编译与链接中提到过预处理&#xff0c;但只是较为简单的讲解&#xff0c;本篇将会对预处理进行详细的讲解。 其中在预处理中很重要的一个一个知识点是#define定义常量与宏&#xff0c;还区分了宏与函数的区别&#xff0c;以及#和##符号&#xff0c;还涉及条件…

【Java SE】类和对象详解

文章目录 1.什么是面向对象2. 类的定义和使用2.1 简单认识类2.2 类的定义格式 3. 类的实例化3.1 什么是实例化3.1.1 练习&#xff08;定义一学生类&#xff09; 3.2 类和对象的说明 4. this 引用5. 构造方法6. 对象的初始化6.1 默认初始化6.2 就地初始化 7. 封装7.1 封装的概念…

Angular系列教程之单向绑定与双向绑定

文章目录 介绍单向绑定双向绑定在自定义组件中实现双向绑定属性总结 介绍 在Angular开发中&#xff0c;数据的绑定是非常重要的概念。它允许我们将应用程序的数据与用户界面进行交互&#xff0c;实现数据的动态更新。在本文中&#xff0c;我们将探讨Angular中的两种数据绑定方…

学习k8s的应用(三)

一、k8s部署ngnix 1、一些查看命令 1-1、所有命令空间 kubectl get pod --all-namespaces kubectl get svc --all-namespaces1-2、指定命令空间 kubectl get pod -n yabin kubectl get svc -n yabin2、单节点集群兼容 # 因为目前只有一个master节点&#xff0c;默认安装后…

workflow源码解析:ThreadTask

1、使用程序&#xff0c;一个简单的加法运算程序 #include <iostream> #include <workflow/WFTaskFactory.h> #include <errno.h>// 直接定义thread_task三要素 // 一个典型的后端程序由三个部分组成&#xff0c;并且完全独立开发。即&#xff1a;程序协议算…

解决C语言wprintf函数无法打印中文的问题

在Visual Studio中&#xff0c;wchar_t[]字符数组用来存储UTF-16编码的字符串&#xff0c;但C语言库函数wprintf无法打印含有汉字的wchar_t字符串。 解决办法是用WriteConsoleW函数重新实现一个自己的my_wprintf函数。 #include <stdio.h> #include <Windows.h>//…

PDF文件中字体乱码的一种简单的处理方法

要解决问题先得碰到问题&#xff0c;碰到问题就迈出了解决问题的关键一步。 问题PDF文件的下载链接 这文件用Acrobat打开&#xff0c;无法搜索文本&#xff0c;复制文本出来也都是乱码。但用sumatra PDF打开就不存在这个问题&#xff01; 用Acrobat的印前检查解决。prefligh…

Python网络爬虫进阶:自动切换HTTP代理IP的应用

前言 当你决定做一个网络爬虫的时候&#xff0c;就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上&#xff0c;但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步&#xff1a;创建爬虫IP池的详细过程 首先&#xf…

电商数据分析--常见的数据采集工具及方法

数据采集|数据运营和数据分析 走进数据&#xff0c;一起学习数据处理&#xff0c;数据分析&#xff0c;数据挖掘&#xff0c;一起成长&#xff0c;相信通过一起努力&#xff0c;未来2-3年我们都会成为公司的中流砥柱。懂数据&#xff0c;会分析&#xff0c;会挖掘&#xff0c;…

mathtype2024版本下载与安装(mac版本也包含在内)

安装包补丁主要是mathtype的安装包&#xff0c;与它的补丁。 详细安装过程&#xff1a; step1&#xff1a; 使用方法是下载完成后先安装MathType-win-zh.exe文件&#xff0c;跟着步骤走直接安装就行。 step2&#xff1a; 关闭之后&#xff0c;以管理员身份运行MathType7PJ.exe…

【linux】visudo

碎碎念 visudo命令是用来修改一个叫做 /etc/sudoers 的文件的&#xff0c;用来设置哪些 用户 和 组 可以使用sudo命令。并且使用visudo而不是使用 vi /etc/sudoers 的原因在于&#xff1a;visudo自带了检查功能&#xff0c;可以判断是否存在语法问题&#xff0c;所以更加安全 …

单节点部署 Gpmall 商城系统

目录 实验中使用的技术 实验过程 实验中使用的技术 Java Redis Elasticsearch&#xff08;先不用&#xff09; Nginx MariaDB ZooKeeper Kafka 实验过程 1.Xnode1克隆虚拟机gpmall CRT连接&#xff08;root密码&#xff1a;000000&#xff09; 2修改主机名 [root…

纵行科技参加“十四五”国家重点研发计划课题“工业化建造自动识别与数据采集(AIDC)成套技术”工程试点

近期&#xff0c;“十四五”国家重点研发计划NQI课题组“产学研用”联合团队开展的“工业化建造自动识别与数据采集&#xff08;AIDC&#xff09;成套技术”工程建造场景集成应用试点&#xff08;第一阶段&#xff09;&#xff0c;在广州白云国际机场T3航站楼项目西指廊及北港湾…

uniapp使用安装sass

1.首先你要安装node-sass npm install node-sass --save-dev2.安装sass-loader npm install sass-loader --save-dev3.修改style标签&#xff0c;声明使用sass <style lang"scss" scoped>

AI工具(20240116):Copilot Pro,Fitten Code等

Copilot Pro Copilot Pro是微软推出的Copilot的付费增强版本,通过提供优先访问GPT-4等最新AI模型,大大提升用户的创造力和工作效率。该服务可与Microsoft 365订阅捆绑使用,支持在Word、Excel等Office应用内直接使用Copilot功能,帮助用户更快速地起草文档、电子邮件和演示文稿等…