2010-08-18 45 views
0

我有一个与gridview交互的代码,并且代码对于多个gridviews是完全相同的。所以,我可以做这样的事情:Vb.net Gridview“指针”?

Dim gridViewPointer As GridView 

     If (gridViewNumber = 1) Then 
      gridViewPointer = GridView1 
     ElseIf (gridViewNumber = 8) Then 
      gridViewPointer = GridView8 
     ... 

然后

If (gridViewPointer.DataSourceID = SQLDatasourcetemp.ID) Then 
... 

将这项工作或有另一种方式做到这一点?

编辑: 我在检查,以确保用户输入到gridview的数据是正确的。它可以是4个gridviews中的一个,并且检查完全相同,代码中唯一更改的参数是gridview1/gridview2/etc。所以,如果我可以使用正确的gridview的“指针”,那么我可以删除所有重复的代码。

+0

我不完全相信我跟随。你能给我们多一点背景吗? – 2010-08-18 19:16:13

+0

编辑原始问题。 – Shawn 2010-08-18 19:21:57

回答

1

是的,这根本不是问题。

每当您将一个对象分配给一个变量时,您实际上是将一个内存引用分配给该变量。使用该引用,您可以读取,写入并调用该对象的所有属性和方法,就好像它存在原始内容一样。

您可能想要了解值与引用类型之间的差异。通过函数调用传递数据时,这主要是一个问题。

http://msdn.microsoft.com/en-us/library/t63sy5hs%28VS.80%29.aspx

其实我可能会创建一个新的函数,在GridView控件调用...

Private Sub GridOperations(ByVal grid as GridView) 
    //Do work here. 
End Sub 

If (gridViewNumber = 1) Then 
    GridOperations(GridView1) 
ElseIf (gridViewNumber =8) Then 
    GridOperations(GridView8) 
... 
+0

+1为功能的想法 – MarkJ 2010-08-18 20:51:42

+0

我把它全部放在一个函数中,我只是把这一部分留下了。 :) – Shawn 2010-08-19 12:14:28

0

你在问什么是正确的。当您设置gridViewPointer = GridView1时,实际上只存储指向GridView1对象的指针,而不是复制该对象,因此您在该集合之后对gridViewPointer执行的任何操作都将直接控制GridView1。