翼度科技»论坛 编程开发 .net 查看内容

在VB.NET项目中使用C#编写的代码

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
前言

VB.NET,全名Visual Basic .NET,是Microsoft .NET框架的一部分,是一种面向对象的编程语言。它继承了Visual Basic的易用性,同时增加了对面向对象编程的支持。VB.NET提供了大量的内置函数,使得开发者可以更容易地处理字符串、数学计算、文件和目录访问等任务。它还提供了对Windows Forms和WPF的强大支持,使得开发Windows桌面应用程序变得更加简单。VB.NET的语法简洁明了,是初学者学习面向对象编程的好选择。
我个人刚开始接触.NET的时候,也是使用的VB.NET,但是随着自己对.NET的深入,我发现.NET的主流语言是C#,于是能使用C#的场合就开始使用C#,已经很久没有写过VB.NET。但是肯定会有一些项目一些人使用的主流语言是VB.NET,也就是VB.NET还有它的用武之地。
比如会遇到这样的场景,你的老板喜欢使用VB.NET,它用VB.NET做了一个项目,而你喜欢C#,你用C#写了一些功能,你的老板希望在它的项目中集成你写的功能。这时候可以选择用VB.NET改写,也可以选择使用C#类库,由于老板不关心你选择什么方式,只要实现了他的要求就行,同时我也对VB.NET不太熟悉了,不想用VB.NET重写,因此使用C#类库的方式。
具体步骤

在项目解决方案中新建一个C#类库项目
如下图所示:

以之前写的嵌入窗体为例:

添加项目引用
右键vb.net项目点击添加——项目引用:

勾选类库:

使用 Imports 关键字引入C#类库的命名空间
在你的VB.NET代码中,使用 Imports 关键字引入C#类库的命名空间,然后你就可以使用C#类库中的类和方法了。

之前C#的写法如下:
  1.    Task.Run(() =>
  2.             {
  3.                 if (WindowManager.FindWindow("Sysplorer [企业版]"))
  4.                 {
  5.                     this.Invoke(new Action(() =>
  6.                     {
  7.                         WindowManager.SetParent(panel1.Handle, "Sysplorer [企业版]");  //设置父容器
  8.                     }));
  9.                 }
  10.                 else
  11.                 {
  12.                     MessageBox.Show("未能查找到窗体");
  13.                 }
  14.             });
复制代码
现在改写成VB.NET:
  1. Task.Run(Sub()
  2.              If WindowManager.WindowManager.FindWindow("Sysplorer [企业版]") Then
  3.                  Me.Invoke(New Action(Sub()
  4.                                           WindowManager.WindowManager.SetParent(Panel1.Handle, "Sysplorer [企业版]") '设置父窗口
  5.                                       End Sub))
  6.              Else
  7.                  MessageBox.Show("未能找到窗口")
  8.              End If
  9.          End Sub)
复制代码
之前的C#写法:
  1. public Form1()
  2. {
  3.      InitializeComponent();
  4.      this.Resize += new EventHandler(Form1_Resize);
  5. }
  6. private void Form1_Resize(object sender, EventArgs e)
  7.         {
  8.             Task.Run(() =>
  9.             {
  10.                 if (WindowManager.intPtr != IntPtr.Zero)
  11.                 {
  12.                     WindowManager.ResizeWindow();
  13.                 }
  14.             });
  15.         }
复制代码
现在改写成VB.NET:
  1. Public Sub New()
  2.      InitializeComponent()
  3.      AddHandler Me.Resize, AddressOf Form1_Resize
  4. End Sub
  5. Private Sub Form1_Resize(sender As Object, e As EventArgs)
  6.     Task.Run(Sub()
  7.                  ' 如果窗口句柄不为零
  8.                  If WindowManager.WindowManager.intPtr <> IntPtr.Zero Then
  9.                      WindowManager.WindowManager.ResizeWindow()
  10.                  End If
  11.              End Sub)
  12. End Sub
复制代码
这样只用少量的修改代码就可以集成之前用C#实现的功能了。
实现效果如下所示:

总结

遇到需要在VB.NET项目中集成用C#写的代码,可以通过类库引用的方式。
具体步骤为:

  • 在解决方案中添加一个新的C#类库项目。
  • 将你的C#代码添加到新的类库项目中。
  • 在你的VB.NET项目中添加对新C#类库的引用。
  • 在你的VB.NET代码中,使用 Imports 关键字引入C#类库的命名空间,然后你就可以使用C#类库中的类和方法了。

来源:https://www.cnblogs.com/mingupupu/p/18204780
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自手机

举报 回复 使用道具