2010-08-18 44 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。