第一次用反射,苦苦挣扎了许久,终得解决。
记录一番。不枉费花费时间。
数据都是从navBarConrol得到,NavBarConrol数据来自xml文件。
/// <summary>
/// 获取页面
/// </summary>
private void ShowFundProducts(string ClassName,string ClassForm)
{
Assembly MyAssembly = Assembly.LoadFrom(ClassName);//获取dll的名字
Form form = (Form)MyAssembly.CreateInstance(ClassForm);//获取到类的实例的名字
Control control = (form as IStrategyForm).GetPanelControl("pnlMainContainer"); //pnlMainContainer为panel控件名
}
private void nbcLeft_LinkClicked(object sender, NavBarLinkEventArgs e)
{
try
{
string nbcLeftItemName = "";
string nbcLeftCode = "";
string nbcLeftCodeClass = "";
string nbcLeftCodeForm = "";
nbcLeftItemName = e.Link.Caption;
List<System.Xml.XmlNode> list = new List<System.Xml.XmlNode>();
List<string> strlist = new List<string>();
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
foreach (System.Xml.XmlNode nd in doc.DocumentElement.ChildNodes)
{
string version = nd.Attributes["name"].Value.ToString();
if (nd.HasChildNodes)
{
foreach (System.Xml.XmlNode n in nd.ChildNodes)
{
string versions = n.Attributes["name"].Value.ToString();
if (versions == nbcLeftItemName)
{
nbcLeftCode = n.Attributes["code"].Value.ToString();
string[] str = nbcLeftCode.Split(',');
nbcLeftCodeClass = str[0];
nbcLeftCodeForm = str[1];
}
}
}
}
this.AaddUserControl(nbcLeftItemName + "page", nbcLeftItemName);
this.ShowFundProducts(nbcLeftCodeClass, nbcLeftCodeForm);
}
catch (Exception ex)
{ }
}
}