百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

在Linux Mint上用MonoIDE+Gtk编写并编译运行vb.net程序

yuyutoo 2024-10-12 01:34 2 浏览 0 评论

VS022写的C#程序放到Mono底座上在Linux上运行相对比较容易,Mono可以在不同CPU结构下运行,底座上的程序也能跟着在它上面运行。 Mono和NetCore,在用不同的方式让 .NET平台上的应用程序跨到其它操作系统平台上运行。如果数据库处理交给数据库服务器去做,GUI交给gtk或web界面去做,再广泛应用其它一些so库,那语言最后越来越胶水糖了。

VBNET能用MonoIDE在Linux上写,我写个简单的例子吧。

安装mono

Linux上sudo apt install大家比较熟悉了,mono这东西也一样,几乎各Linux系统主库都包含它了,直接sudo apt就可以了,就不多说了。

创建空窗体

新建解决方案

选其它下面的 .NET 下的 GTK#2.0 项目,语言选VBNET。

填写项目名称,选择文件存储位置,点击创建。

生成三个文件,Main是主程序,MyWindow 是窗体类,另一个组装信息。

在引用处右键,进入引用编辑,将需要的引用勾选上。对于这个演示,一是引入system,二是引入gtk,其它的暂不需要。

填写代码

项目框架给出的 window 和退出函数,均是基于gtk的,并不是system空间的,就边application也是,所有GUI相关的,全部源自于 gtk 。

编译及运行

Ctrl+s存盘,F8编译,F5运行。

点击 Make Changes! 相关内容按预期进行了变化。

附:源代码

主要是MyWindow.vb和Main.vb,组装信息是版权、版本等信息就不需要列了。

'-----------------------------------------------------------------------
' MyWindow.vb
'-----------------------------------------------------------------------
Imports System
Imports Gtk

Public Class MyWindow
    Inherits Window

    Public Box1 As New VBox
    Public Button1 As New Button("Make Changes!")
    Public Button2 As New Button("Exit!")
    Public Entry1 As New Entry("An input TextBox")
    
    Public Sub New()
        MyBase.New("MyWindow")
        Me.SetDefaultSize(400, 300)
        Me.Add(Box1)
        Me.Box1.Add(Entry1)
        Me.Box1.Add(Button1)
        Me.Box1.Add(Button2)
        
        AddHandler MyBase.DeleteEvent, AddressOf OnMyWindowDelete
        AddHandler Button1.clicked, AddressOf on_btn1_clicked
        AddHandler Button2.clicked, AddressOf on_btn2_clicked
        
        Me.ShowAll()
    End Sub
	
	Private Sub OnMyWindowDelete (ByVal sender As Object, ByVal a As DeleteEventArgs)
        Application.Quit()
        a.RetVal = true
	End Sub
	Private Sub on_btn1_clicked (byval sender as Object, byval user_data as EventArgs)
        Me.Title = "Change Tile of MainWindow"
        Entry1.Text = "Hello VisualBasic.NET from Mono!"
        Button1.label = "User label instead of Text in Gtk!"
    End Sub
    Private Sub on_btn2_clicked (byval sender as Object, byval user_data as EventArgs)
        Application.Quit()
    End Sub
End Class
'-----------------------------------------------------------------------
' MyWindow.vb
'-----------------------------------------------------------------------
Imports System
Imports Gtk

Public Class MainClass

	Public Shared Sub Main ()
        Application.Init()
        Dim win As New MyWindow()
        win.Show()
        Application.Run()
    End Sub
	
End Class


其它

Mono对VBNET下功夫不是很多,满网上只能找到它Module级的简单样本,是Console控制台方式的。至于如何借助gtk几乎找不到sample(或许我找得不够或没努力找到),它用了gtk又做了封装,和gtk原来的写法有很大的差别,还好gtk的界面基本东西就那些,猜着写也基本上能写的出来。应该说,它封装后简化了使用,但没有说明材料反而让人用着很难。

或许哪天mono把vbnet做得和C#一样好,基本上搬来vs2022上的源代码即可通行。

相关推荐

jQuery VS AngularJS 你更钟爱哪个?

在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...

Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0

在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...

如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例

要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...

编程技巧:Jquery实时验证,指定长度的「负小数」

为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

编程技巧:Jquery实时验证,指定长度的「正小数」

为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...

jquery.validate检查数组全部验证

问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...

Vue进阶(幺叁肆):npm查看包版本信息

第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...

layui中使用lay-verify进行条件校验

一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...

jQuery是什么?如何使用? jquery是什么功能组件

jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...

django框架的表单form的理解和用法-9

表单呈现...

jquery对上传文件的检测判断 jquery实现文件上传

总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...

Nodejs之MEAN栈开发(四)-- form验证及图片上传

这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...

大数据开发基础之JAVA jquery 大数据java实战

上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...

推荐四个开源的jQuery可视化表单设计器

jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...

取消回复欢迎 发表评论: