你可以試試下面的代碼。
解決方案1:
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class ObjectFinder
{
private static object CreateObjectInstance(string objectName)
{
// Creates and returns an instance of any object in the assembly by its type name.
object obj = null;
try {
if (objectName.LastIndexOf(".") == -1) {
//Appends the root namespace if not specified.
objectName = string.Format("{0}.{1}", Assembly.GetEntryAssembly.GetName.Name, objectName);
}
obj = Assembly.GetEntryAssembly.CreateInstance(objectName);
} catch (Exception ex) {
obj = null;
}
return obj;
}
public static Form CreateForm(Form objForm, string strName, string strAddr, string strCity)
{
// Return the instance of the form by specifying its name.
var objChild = (objForm)CreateObjectInstance(objForm.Name);
objChild.strName = txtName.Text1;
objChild.strAddr = txtAddress.Text2;
objChild.strCity = txtCity.Text2;
return objChild;
}
}
你可以稱之爲靜態函數來創建子窗體如下
objForm = ObjectFinder.CreateForm(frmChild1, strName, strAddr, strCity);
objForm.ShowDialog();
解決方案2:
,或者簡單地創建擴展方法Form
對象如下。
public static Form CreateForm(this Form objForm, string strName, string strAddr, string strCity)
{
// Return the instance of the form by specifying its name.
var objChild = (objForm)CreateObjectInstance(objForm.Name);
objChild.strName = txtName.Text1;
objChild.strAddr = txtAddress.Text2;
objChild.strCity = txtCity.Text2;
return objChild;
}
,並把這種擴展方法如下
objForm = frmChild1.CreateForm(strName, strAddr, strCity);
objForm.ShowDialog();
列出所需的表單類型並通過循環實例化它們。但是使用ShowDialog,無論如何您都只能一次顯示一個。 – Lennart
無論如何,您無法在多個表單中使用ShowDialog ......一次實例化所有表單有什麼意義? –
@ZoharPeled,並不是所有的形式一次。我在按鈕上方有一個下拉菜單。在該下拉列表中,我將在填充文本框後選擇一個表單,當我單擊該按鈕時,相應的表單應該打開。 – Sakthi