VB.net新手试图转换一些c#代码
我在将以下相当直接的c#代码转换为vb.net 4.0时遇到了麻烦,据我所知,vb.net 4.0具有匿名委托。我只是还没弄明白VB.net新手试图转换一些c#代码,vb.net,anonymous-function,anonymous-methods,c#-to-vb.net,Vb.net,Anonymous Function,Anonymous Methods,C# To Vb.net,我在将以下相当直接的c#代码转换为vb.net 4.0时遇到了麻烦,据我所知,vb.net 4.0具有匿名委托。我只是还没弄明白 _combo.DataBound += (sender, args) => { var item = _combo.FindItemByValue(values[0].ToString());
_combo.DataBound += (sender, args) =>
{
var item = _combo.FindItemByValue(values[0].ToString());
if (item != null)
item.Selected = true;
};
我试过以下方法
_combo.DataBound += Function(sender, args)
Dim item = _combo.FindItemByValue(values(0).ToString())
If item IsNot Nothing Then
item.Selected = True
End If
End Function
但是编译器抱怨不能直接调用DataBound,而必须使用RaiseEventsAddHandler\u combo.DataBound,Function(sender,args)。。。我认为结束函数是正确的语法。AddHandler\u combo.DataBound,Function(sender,args)。。。结束函数是我认为正确的语法。我想我已经弄明白了 宣布一个事件 私有事件OnCombo_数据绑定(ByVal值 作为ArrayList) 使用RaiseEvent来启动它
RaiseEvent OnCombo_DataBound(values)
为事件创建一个处理程序
Private Sub Combo_DataBound(ByVal values As System.Collections.ArrayList) Handles OnCombo_DataBound
Dim item = _combo.FindItemByValue(values(0).ToString())
If item IsNot Nothing Then
item.Selected = True
End If
End Sub
我想我明白了 宣布一个事件 私有事件OnCombo_数据绑定(ByVal值 作为ArrayList) 使用RaiseEvent来启动它
RaiseEvent OnCombo_DataBound(values)
为事件创建一个处理程序
Private Sub Combo_DataBound(ByVal values As System.Collections.ArrayList) Handles OnCombo_DataBound
Dim item = _combo.FindItemByValue(values(0).ToString())
If item IsNot Nothing Then
item.Selected = True
End If
End Sub
我不是.net类型的人,但我真的很好奇(顺便说一句)为什么有人想把代码从c#转换成vb。我相信这有一个很好的理由,但这是什么呢?这是从一个论坛帖子中提取出来的,是我正在工作的一个问题。这个项目是vb.net(不是我的强项),关于我正在处理的问题的讨论都是用c语言进行的。啊,很公平。有道理。我的哀悼。VB.NET中的匿名代表必须是单行。在单行中完成上述操作是一个挑战,或者您需要调用一个中间函数。我不是.net类型的人,但我真的很好奇(顺便问一下)为什么有人想将代码从c#转换为vb。我相信这有一个很好的理由,但这是什么呢?这是从一个论坛帖子中提取出来的,是我正在工作的一个问题。这个项目是vb.net(不是我的强项),关于我正在处理的问题的讨论都是用c语言进行的。啊,很公平。有道理。我的哀悼。VB.NET中的匿名代表必须是单行。在单行中执行上述操作是一个挑战,或者您需要调用一个中间函数。这是在匿名委托中执行此操作的正确方法,谢谢。请参阅我的答案,了解如何将其更改为普通事件和委托。这是与匿名委托内联使用的正确方法,谢谢。查看我的答案,了解如何将其更改为常规事件并委派。