我的应用程序中有显示绑定到 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”。