前言 VB.NET,全名Visual Basic .NET,是Microsoft .NET框架的一部分,是一種面向對象的編程語言。它繼承了Visual Basic的易用性,同時增加了對面向對象編程的支持。VB.NET提供了大量的內置函數,使得開發者可以更容易地處理字元串、數學計算、文件和目錄訪問等任 ...
前言
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#的寫法如下:
Task.Run(() =>
{
if (WindowManager.FindWindow("Sysplorer [企業版]"))
{
this.Invoke(new Action(() =>
{
WindowManager.SetParent(panel1.Handle, "Sysplorer [企業版]"); //設置父容器
}));
}
else
{
MessageBox.Show("未能查找到窗體");
}
});
現在改寫成VB.NET:
Task.Run(Sub()
If WindowManager.WindowManager.FindWindow("Sysplorer [企業版]") Then
Me.Invoke(New Action(Sub()
WindowManager.WindowManager.SetParent(Panel1.Handle, "Sysplorer [企業版]") '設置父視窗
End Sub))
Else
MessageBox.Show("未能找到視窗")
End If
End Sub)
之前的C#寫法:
public Form1()
{
InitializeComponent();
this.Resize += new EventHandler(Form1_Resize);
}
private void Form1_Resize(object sender, EventArgs e)
{
Task.Run(() =>
{
if (WindowManager.intPtr != IntPtr.Zero)
{
WindowManager.ResizeWindow();
}
});
}
現在改寫成VB.NET:
Public Sub New()
InitializeComponent()
AddHandler Me.Resize, AddressOf Form1_Resize
End Sub
Private Sub Form1_Resize(sender As Object, e As EventArgs)
Task.Run(Sub()
' 如果視窗句柄不為零
If WindowManager.WindowManager.intPtr <> IntPtr.Zero Then
WindowManager.WindowManager.ResizeWindow()
End If
End Sub)
End Sub
這樣只用少量的修改代碼就可以集成之前用C#實現的功能了。
實現效果如下所示:
總結
遇到需要在VB.NET項目中集成用C#寫的代碼,可以通過類庫引用的方式。
具體步驟為:
- 在解決方案中添加一個新的C#類庫項目。
- 將你的C#代碼添加到新的類庫項目中。
- 在你的VB.NET項目中添加對新C#類庫的引用。
- 在你的VB.NET代碼中,使用
Imports
關鍵字引入C#類庫的命名空間,然後你就可以使用C#類庫中的類和方法了。