我正在嘗試使用 userControl 創建一個自定義文本框,我的問題在于設定 userControl 的默認事件以處理文本框的 textChanged 的??部分。我目前只有一個文本框的 userControl。
在 c# 中,我有這個完美運行的代碼(UserControl3.cs 檔案):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace custom_controls
{
[DefaultEvent("_TextChanged")]
public partial class UserControl3 : UserControl
{
public UserControl3()
{
InitializeComponent();
}
public event EventHandler _TextChanged;
private void TextBox1_TextChanged(object sender, EventArgs e)
{
if (_TextChanged != null)
{
_TextChanged.Invoke(sender, e);
}
}
}
}
但是我無法將其正確轉換為需要控制元件的 vb.net。非常感謝任何幫助或建議。
這是從 C# 到 VB.net 的轉換產生的代碼:
<DefaultEvent("_TextChanged")>
Public Class UserControl3
Public Event _TextChanged As EventHandler
Private Sub textBox1_TextChanged(sender As Object, e As EventArgs) Handles textBox1.TextChanged
If _TextChanged IsNot Nothing Then 'error here: _TextChanged
_TextChanged.Invoke(sender, e) 'error here: _TextChanged
End If
End Sub
End Class
錯誤影像:

uj5u.com熱心網友回復:
您不能在 vb 和 c# 中以相同的方式引發事件。vb 有一個關鍵字RaiseEvent可以做到這一點
<DefaultEvent("_TextChanged")>
Public Class UserControl3
Public Event _TextChanged As EventHandler
Private Sub textBox1_TextChanged(sender As Object, e As EventArgs) Handles textBox1.TextChanged
RaiseEvent _TextChanged(sender, e)
End Sub
End Class
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361773.html
標籤:网络 文本框 用户控制 c#-to-vb.net
