为什么要navigateurl这样的功能呢?你捕获到双击事件,然后到数据库中读取相应的窗体名
然后用Switch语句来实例化窗口不就行了吗?
switch( formName )
{
    case "form1":
    {
       form1 = new Form1();
       form1.Show();
    }break;
}

解决方案 »

  1.   

    kh\form.cs

    kh\form.cs这都是源文件,程序在运行时只能来运行编译好的程序比如一个EXE,或DLL,所以你只有源代码是不能做的,除非你在运行的时候把这些源代码动态成DLL,动态编译的实现在.NET中也有,但是相对来说比较麻烦.所以,你最好把数据库里存的"kh\form.cs"这样的字段值改成窗体的类的名字,比如这样来在数据库里存:
    id   parentid  name    Dllname      Classname
    11     10       bb    kh.DLL        form1 //这里应是一个窗体的类的FullName
    12     10       cc    kh.DLL        from2 //这里应是一个窗体的类的FullName这样的话,你可以用
    System.Reflection.Assembly.LoadFrom(DllPathName);来加载你的DLL,然后用如下的代码来加载并显示你的窗体:System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(DllPathName);
    object obj = asm.CreateInstance(typeName);
    if (obj is Form)
    {
    (obj as Form).Show();
    }
      

  2.   

    谢谢:hxhbluestar(贺星河) 和 hbxtlhx(最后一片绿叶)