我不知道如何接近冠军这个问题,所以我会介绍我的情况,希望我是清楚我的疑惑。 (如果有一个为标题更好的建议,我会改变它)控制为参数的委托方法
在过去的几天里,我阅读关于围绕多线程和GUI使用场景控制修改。 我的问题涉及将控件作为我的委托和方法的参数进行更改。 比方说,我有一个ListView1的,我想一个组添加到它(这是一个简单的经验,并拥有几个代码)
据我看到的例子,做它的方式是
Private Delegate Sub ResultsAddGroup_Delegate(ByVal FondsGroup As ListViewGroup)
Private Sub ResultsAddGroup(ByVal FondsGroup As ListViewGroup)
If Me.ListView1.InvokeRequired Then
Dim d As New ResultsAddGroup_Delegate(AddressOf ResultsAddGroup)
Dim ParamArgs() As Object = New Object() {FondsGroup}
Me.ListView1.BeginInvoke(d, ParamArgs)
Else
Me.ListView1.Groups.Add(FondsGroup)
End If
End Sub
我通常喜欢通过控制作为一个参数,以保持代码清晰和方法或函数从所述特定控制物体。 如果我想通过ListView控件作为参数针对上述案例,像这样:
Private Delegate Sub ResultsAddGroup_Delegate(ByVal LView As ListView, ByVal FondsGroup As ListViewGroup)
Private Sub ResultsAddGroup(ByVal LView As ListView, ByVal FondsGroup As ListViewGroup)
If LView.InvokeRequired Then
Dim d As New ResultsAddGroup_Delegate(AddressOf ResultsAddGroup)
Dim ParamArgs() As Object = New Object() {LView, FondsGroup}
LView.BeginInvoke(d, ParamArgs)
Else
LView.Groups.Add(FondsGroup)
End If
End Sub
会代表什么样的问题多线程和控制不断变化的目的是什么? 如果是这样,有没有另一种方法来做到这一点,而不指定控制?
另一方面,是否有任何问题,我通常做我的方法(如上所述,通过传递控制参数)?
谢谢
是的,我相信是这样,但是因为我不确定,所以我希望得到比我更多经验的人的意见。 关于代码,这是一个复制/粘贴错误,您可以从第二块代码中看到。 感谢您的输入。 – Deltint