2010-07-31 86 views
0

我使用提供的查找按鈕有多種形式。我有的形式是Contacts.vb和Users.vb,我想爲這兩種形式使用單個Find.vb表單。我的意思是,用戶是否按下Contacts.vb或Users.vb中的Find按鈕,應該用從數據庫中獲取的相應數據打開相同的表單。如何知道在vb.net中哪種形式稱爲另一種形式?

我嘗試使用Users.vb中的Find.Owner = Me,但我不知道如何從Find.vb確定誰是所有者。

我試圖使用,如果查找窗體的所有者是Users.vb然後從用戶表中獲取數據,如果所有者是Contacts.vb然後從聯繫人表中獲取數據。 不幸的是,我無法執行此任務。

請提供任何適當的解決方案或任何其他建議來執行此操作。 在前提前感謝

回答

1

向子窗體中添加一個屬性(例如「PersonType」) - 在顯示窗體之前從父窗體中設置此屬性,然後使用此屬性的值執行正確的搜索類型。

2

您應該添加一個屬性來查找形式如下:

Private findTypeValue As FindType 
Public Property FindType As FindType 
Get 
Return findTypeValue 
End Get 
Set (value as FindType) 
findTypeValue = value 
End Set 

而對於財產創造枚舉:

Public Enum FindType As Integer 
Contacts = 0 
Users= 1 
End Enum 

然後在查找形式檢查類型:

If FindType = FindType.Contacts Then 
... 
Else 

End If 
7

致電您的兒童表格使用:

frmChildren.ShowDialog(Me) 

現在,如何知道調用父窗體的表單? 使用:

Me.Owner.Name 

例如...

if Me.Owner.Name = "frmMain" then 
    MessageBox.Show("YES! Its called from frmMain") 
else 
    MessageBox.Show("Its called from " & Me.Owner.Name) 
End If 

也許正是你需要這樣的:

'To call your form Find.vb from a command button. (for example) 
Find.ShowDialog(Me) 

'How to know which form call to Find.vb ? 
If Me.Owner.Name = "Contacts" then 
    'Actions for Contacts 
ElseIf Me.Owner.Name = "Users" then 
    'Actions for Users 
else 
    'Actions for NOT"Contacts" and NOT"Users" 
end if