我在我的應用程序中顯示綁定到BindingSource的DataGrid的窗體。當我雙擊一行時,我會顯示一個詳細表單。實例化一個未知類型的傳入窗體
我幾乎有50個這些「瀏覽」表單及其附帶的詳細表單。我想通過創建基本瀏覽表單並將適當的BindingSource傳遞給它來減少表單(和代碼)的數量。我有這個工作。但是,當我雙擊一行時,我想實例化與傳遞的BindingSource相關的詳細表單。
例如,如果用戶瀏覽Customer表格,則將打開Customer Detail表格,但是如果他瀏覽Job表格,則將打開Job Detail表格。
我可以傳遞一個通用的詳細信息表單作爲參數,但我該如何將通過的表單轉換爲正確的類型之一,以便我可以實例化它?
(我試圖避免大的switch語句,通過循環來選擇正確的傳遞形式。當然還有一個更優雅的方式來實現這一目標?)
[編輯] 我的瀏覽形式的代碼實例化因此:
public BaseBrowse(BindingSource dataClass, DevExpress.XtraEditors.XtraForm crudForm)
{
InitializeComponent();
bs = dataClass;
crud = ((CRUDEquipment)(crudForm));
}
我雙擊事件是這樣的:
private void gvw_DoubleClick(object sender, EventArgs e)
{
Int32 nID = Convert.ToInt32(gvw.GetFocusedRowCellValue("ID"));
((CRUDEquipment)(crud)).intID = nID;
((CRUDEquipment)(crud)).Show();
}
我需要一種方法來取代「CRUDEquipment」與我的東東任何形式d。
所以你形成配置對象需要*兩個*成員,BindingSource的和詳表型。 –
我實際上是通過BindingSource和表單的副本。 – Chimesy