动态打开窗口问题

问题描述

stringqq="login";loginf=newlogin();f.MdiParent=this;f.Show();怎么样才可以让loginf=newlogin();代入我定义的那个新窗口名呢,或者是其他方法可以动态传给他的。谢谢了,我写桌面新手来的,也穷,没什么分。

解决方案

解决方案二:
各位同学不介意我自己顶一下吧
解决方案三:
如果是在将“login"显示在窗口标題Formf=newForm();f.Text="login";f.Show();不知是这个意思吗?
解决方案四:
说实话,我真没看懂表达的意思,不过楼上应该是正解
解决方案五:
对于大家来说这是简单的问题,我不懂
解决方案六:
不是啊。我来解释一下stringqq="login";//我自己想动态定义从数据库里取值出来,有可能是要打开login或是qqmail之类的新窗口loginf=newlogin();//这里的login是新要打开的一个窗口这页的名就loginf.MdiParent=this;f.Show();不知我这样描述大家明白了没有
解决方案七:
是没有看懂你的描述,你能重新描述下就好了
解决方案八:
我5楼的那个描述应该很明白吧
解决方案九:
或者哪位同学加我QQ了解一下
解决方案十:
恩,我回帖的时候没刷新页面,没看到
解决方案十一:
我Q261805
解决方案十二:
这下大概懂了,希望从字符串转换成类,基本不可能只有用switch判断,也是写死的一种要不然在数据库存序列化的类,反序列化出来
解决方案十三:
我觉得应该可以,或者是其他的不同的方法。比如我的菜单都是从数据库取出来的这肯定要动态的加载才玩的通,C#应该不是这么差吧。
解决方案十四:
你的意思是動態創建對象是不?通過從數據庫中讀取值,通過這個值創建相關對象???如果是的話,用把射,不是的話,我就還沒理解你的意思,不好意思!
解决方案十五:
动态加载只有用反射
解决方案:
反射怎么用呢,有没有小小的实例可供学习一下
解决方案:
引用13楼zhantianyou的回复:

你的意思是動態創建對象是不?通過從數據庫中讀取值,通過這個值創建相關對象???如果是的話,用把射,不是的話,我就還沒理解你的意思,不好意思!

我就是要实现5楼那样描述的功能啊。
解决方案:
没有那么复杂吧,只要给login类加一个属性不就可以了吗?publicstringqq{get;set;};在重载一个构造函数publiclogin(stringqq){this.qq=qq;}
解决方案:
namespaceMyLibrary{publicclassClass2{publicintdef;stringmstrName;publicstringName{get{returnmstrName;}set{mstrName=value;}}}publicclassClass3{publicintghi;intmint;publicvoidWalk(intDistance){mint+=Distance;}}publicclassClass4{publicintjkl;}}这里面包括四个类,每个类有不同的成员,把它编译成DLL文件。现在再做一个Windows项目:首先把MyLibrary.dll拷贝到当前目录下。代码://对公共语言运行库中的模块执行反射操作privatevoidbutton1_Click(objectsender,System.EventArgse){//我们现在要知道原始的基类Object的情况objectb=newobject();//定义一个公共语言运行库的构造块:Assembly(装配)System.Reflection.Assemblya;//通过Module.Assembly使模块执行反射操作//说明://b.GetType()为获取对象b的类型//Module为获取已经定义类型的模块(DLL)//Assembly为这个模块获取适当的Assemblya=(b.GetType()).Module.Assembly;intnumInterfaces=0;intnumClasses=0;intnumArrays=0;intnumValueTypes=0;listBox1.Items.Clear();Type[]types=a.GetTypes();for(inti=0;i<types.Length;i++){if(types[i].IsClass){numClasses++;listBox1.Items.Add(types[i].Name+"'");}//listBox1.Items.Add("类"+i.ToString()+""+types[i].FullName);//类型不多,所以我们可以将它们全部输出if(types[i].IsValueType)numValueTypes++;if(types[i].IsArray)numArrays++;if(types[i].IsInterface){listBox1.Items.Add(types[i].Name+"'");//仅输出接口的名称numInterfaces++;}}listBox1.Items.Add("类总数="+numClasses.ToString());listBox1.Items.Add("接口总数="+numInterfaces.ToString());listBox1.Items.Add("数据类型总数="+numValueTypes.ToString());listBox1.Items.Add("数组总数="+numArrays.ToString());}//对独立的模块文件执行反射操作privatevoidbutton2_Click(objectsender,System.EventArgse){//我们现在要知道MyLibrary.dll的情况System.Reflection.Assemblya;//通过调入文件执行反射操作a=System.Reflection.Assembly.LoadFrom("MyLibrary.dll");Type[]types=a.GetTypes();listBox1.Items.Clear();for(inti=0;i<types.Length;i++){listBox1.Items.Add("类"+i.ToString()+""+types[i].FullName);//类型不多,所以我们可以将它们全部输出//FieldInfo发现字段特性并提供字段元数据的访问权System.Reflection.FieldInfo[]fi;fi=types[i].GetFields(System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.Public);for(intj=0;j<fi.Length;j++){listBox1.Items.Add(fi[j].Name);}//注释掉的部分为显示方法/*//MethodInfo发现方法特性并提供方法的访问权System.Reflection.MethodInfo[]Mfi;Mfi=types[i].GetMethods(System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.Public);for(intj=0;j<Mfi.Length;j++){listBox1.Items.Add(Mfi[j].Name);}*/}}
解决方案:
把你的email地址发出来吧!给你一个反射的资料。
解决方案:
我邮件webcool@qq.com,谢谢各位啊。
解决方案:
引用17楼liuxingzi001的回复:

没有那么复杂吧,只要给login类加一个属性不就可以了吗?publicstringqq{get;set;};在重载一个构造函数publiclogin(stringqq){this.qq=qq;}

{get;set;};这东东是不是只有VS08才有的啊,我的05编译会报错啊
解决方案:
17楼没看懂你的意思。你想的是,读取一个字符串,可以直接获取对应名字的类的实例。这个不可能,唯一方法是把这个新form放在一个dll里,然后动态读取,获得这个类。

时间: 2024-08-08 02:15:18

动态打开窗口问题的相关文章

MathType打开窗口太多怎么办

  具体操作方法如下: 1.将打开的MathType公式编辑器关闭,同时你所打开的Word文档或者是WPS文档都有关闭掉. 2.在关闭掉文档软件后,将右下角消息通知区域的MathType服务器退出一下就可以了. "消息通知区域"中退出MathType服务器 3.这时你再打开MathType后就可以正常使用了,也不会再提示你打开窗口过多了. 以上内容向大家介绍了MathType打开窗口过多的解决方法,很多人在关闭MathType软件后,没有退出MathType服务器,所以打开后还是会有提

word启动时自动显示打开窗口

word启动时自动显示打开窗口,大多情况下启动Word后第一件事就是执行"打开"命令,何不让Word一启动就自动显示"打开"对话框呢?这样我们需要多次修改一些个人简历表格的时候,就可以快速打开了,因此利用VBA(Visual Basic for Applications)可以轻松实现目的,让Word满足个性化的需求. 只要编写一个非常简单的宏即可,依次单击菜单[工具]→[宏]→[宏],在"宏名"文本框中输入宏的名称,这个宏必须取名为 "

Win7系统如何在打开窗口时总是显示菜单栏

修改文件夹和搜索选项中的相关设置即可实现在打开窗口时总是显示菜单栏. 第一步:打开文件夹和搜索选项 右键点击"计算机",选择"打开"; 依次点击"组织">"文件夹和搜索选项";(见下图) 第二步:修改高级设置 在"查看"标签下"高级设置"中勾选"始终显示菜单"; 点击"应用"和"确定"即可.

XP系统任务栏不显示打开窗口怎么办?

  XP系统任务栏不显示打开窗口怎么办?            方法一: 有一种情况是打开的窗口任务栏不显示,包括任务栏也看不到.但是鼠标点击过去又能正常显示,这是因为设置了任务栏自动隐藏导致的. 1.找到任务栏,右键.属性. 如下图: 2.打开任务栏属性,找到常规里面的"自动隐藏任务栏"选项 ,把前面的那个勾去掉即可. 方法二: 由于桌面进程出错.重启计算机,或注销重新登录即可恢复正常,如果您有正在进行的任务不方便重启或注销,可以通过下面方法重置桌面进程. 步骤如下: 1.找到任务栏

Windows 8中如何设置在新选项卡中打开窗口

  适用范围: 适用于Windows 8 消费预览版.IE10浏览器 知识点分析: 如何设置在新选项卡中打开窗口. 操作步骤: 1. 在IE命令栏或右上角点击"工具"按钮,选择"Internet选项"; 2. 在"常规"选项中,点击"选项卡"按钮; 3. 首先确认"启用选项卡浏览"是选中状态; 在"遇到弹出窗口时"选择"始终在新选项卡中打开弹出窗口"; 在"

Win8如何在打开窗口时总是显示菜单栏

  Win8在打开窗口时总是显示菜单栏的方法如下: 实际测试Windows 8消费者预览版默认打开窗口后,如下图: 如图所示已有:文件.计算机.查看菜单(打开不同类型的窗口,菜单不一样). 但是如何像Windows 7操作系统一样去设置文件夹选项,使之"始终显示菜单栏"呢? 操作步骤: 1.点如图所示鼠标箭头处,会展开工具栏. 2.展开工具栏后,请选择到"查看"菜单,单击"选项"出现下拉菜单,请点击"更改文件夹和搜索选项".

Win8如何设置在新选项卡中打开窗口

  Win8设置在新选项卡中打开窗口的方法如下: 1.在IE命令栏或右上角点击"工具"按钮,选择"Internet选项. 2.在"常规"选项中,点击"选项卡"按钮. 3.首先确认"启用选项卡浏览"是选中状态,在"遇到弹出窗口时"选择"始终在新选项卡中打开弹出窗口",在"在以下位置打开来自其他程序的链接"选择"当前窗口中的新选项卡",确定&

Windows8中如何在打开窗口时总是显示菜单栏

  实际测试 Windows 8 消费者预览版默认打开窗口后,如下图: 如图所示已有:文件.计算机.查看菜单(打开不同类型的窗口,菜单不一样). 但是我们如何像 Windows 7 操作系统一样去设置文件夹选项,使之"始终显示菜单栏"呢? 操作步骤一: 1.点如图所示鼠标箭头处,会展开工具栏; 2.展开工具栏后,请选择到"查看"菜单,单击"选项"出现下拉菜单,请点击"更改文件夹和搜索选项"; 3.点此项后会出现我们熟悉的&qu

PB 使用变量打开窗口后,其中的控件如何被其他窗口调用?

问题描述 PB 使用变量打开窗口后,其中的控件如何被其他窗口调用? 虚心请教: 用以下方法打开了一个窗口es_sys_users window win string ls_winname ls_winname='es_sys_users' if isValid(win) then win.show() win.windowstate=normal! else open(win,ls_winname,w_main) end if 以上代码打开窗口正常,该窗口中有一个数据窗口dw_1, 但是在另一个