请高人指点,VB.net动态对象创建与删除,并且该对象拥有很强的扩展性,我的代码,就是无法实现删除功能!

问题描述

PublicClassForm2PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickForm1.Button2=NewSystem.Windows.Forms.ButtonForm1.TabPage1.Controls.Add(Form1.Button2)Form1.Button2.Location=NewPoint(Form1.Label1.Text,Form1.Label2.Text)Form1.Button2.Size=NewSystem.Drawing.Size(79,29)Form1.Button2.TabIndex=0'Me.Button2.Text=Form2.TextBox1.TextForm1.Button2.UseVisualStyleBackColor=TrueForm1.Button2.ContextMenuStrip=Form1.ContextMenuStrip2Form1.Button2.Name=TextBox1.TextForm1.Button2.Text=TextBox1.TextAddHandlerForm1.Button2.MouseDown,AddressOfForm1.Button2_MouseDown'绑定事件处理程序AddHandlerForm1.Button2.MouseMove,AddressOfForm1.Button2_MouseMoveAddHandlerForm1.Button2.Click,AddressOfForm1.Button2_Click'绑定事件处理程序ForEachobInForm1.TabPage1.ControlsIfob.text=TextBox2.TextThenMessageBox.Show(ob.name)ob.GetType()EndIfNextMe.Visible=FalseEndSubPublicClassForm1DimjiheAsNewCollectionDimx,yAsSingleFriendWithEventsButton2,button4AsSystem.Windows.Forms.ButtonDimButtonsAsNewButtonArray(Me)FriendWithEventsLineShape2AsMicrosoft.VisualBasic.PowerPacks.LineShapePrivateSub新建网元ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles新建网元ToolStripMenuItem.ClickForm2.Show()EndSubPrivateSubTabPage1_MouseMove(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesTabPage1.MouseMoveLabel1.Text=e.XLabel2.Text=e.YLabel3.Text=Me.TabPage1.Controls.CountEndSubPublicSubButton2_MouseMove(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.MouseEventArgs)If(e.Button=Windows.Forms.MouseButtons.Left)Thensender.SetBounds(sender.Left+e.X-x,sender.Top+e.Y-y,sender.Width,sender.Height)EndIfEndSubPublicSubButton2_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)x=e.X'确定鼠标的按下位置y=e.YEndSubPublicSubButton2_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)MsgBox("点击:"&sender.GetType().ToString&CType(CType(sender,Button).Tag,String))MsgBox(sender.ToString())EndSubPrivateSub删除网元ToolStripMenuItem1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles删除网元ToolStripMenuItem1.ClickControlSelect(Button2)IfMe.TabPage1.Controls.Contains(Button2)ThenButton2.Controls.Find(Button2.Text,True)Me.TabPage1.Controls.Remove(Button2)EndIfEndSub在我的程序中,如果你创建3个Button2对象对,删除功能只能删除最后创建的那个Button2对象,希望大家更个我一个更好的解决方案!改进Button2对象的创建于删除功能。小弟感谢不敬!

解决方案

本帖最后由 chinaunicomx86 于 2010-11-14 10:40:52 编辑
解决方案二:
“很强的扩展性”原来如此啊。
解决方案三:
别在“xxxx元”这个地方打转转了,做点实际的项目。除非你只是想靠这个在学校里弄点声誉。步入社会,这种纠结出来的“扩展性”其实什么也不是。扩展性体现在很大很深入的行业软件应用架构方面,而小的东西如果抠不出来就不要再抠了。其实这种东西很简单,但是不适合学生去抠。带着真正实际的应用环境再来看这类问题,几分钟就可以解决。
解决方案四:
专家说的是呀!但我不是学生,是个偷懒的人,工作上的事,能叫别人做尽量叫别人做,尽可能叫电脑去做,不愿意做我就托,呵呵呵,但这个事还是为了方便工作的,能帮我一下吗?
解决方案五:
楼主威武!!!你做的东西是show个from2,然后from2给from1的Button2赋个新的Button(你很强大)删除时候根据Button2的text判断添加进去的Button并将其删除你每按一次Form2的Button1都只会给Form1的Button2换个新的Button(这句话咋这么别扭),Form1.Button2.text始终记录的是最后一次换上去的值,你靠这个判断,肯定只能删除最后一次添加的Button。说话真别扭。。。。。。。。。
解决方案六:
参考DimButtonCollectionAsNewCollectionPrivateSubForm1_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.LoadToolStripSplitButton1.Text="删除"ToolStripSplitButton1.DisplayStyle=ToolStripItemDisplayStyle.TextDimButton1AsNewButtonButton1.Text="添加按钮"AddHandlerButton1.Click,AddressOfAddButtonButton1.Location=NewPoint(100,100)Me.Controls.Add(Button1)EndSubSubAddButton(ByValsenderAsObject,ByValeAsSystem.EventArgs)DimNewButtonAsNewButtonStaticDimButtonIDAsInteger=0ButtonID+=1WithNewButton.Location=NewPoint(10,ButtonID*40)'NewPoint(Form1.Label1.Text,Form1.Label2.Text).Size=NewSystem.Drawing.Size(79,29).TabIndex=0.UseVisualStyleBackColor=True'.ContextMenuStrip=Form1.ContextMenuStrip2.Name="Button"&ButtonID'TextBox1.Text.Text="Button"&ButtonID'TextBox1.Text'AddHandler.MouseDown,AddressOf_MouseDown'绑定事件处理程序'AddHandler.MouseMove,AddressOf_MouseMove'AddHandler.Click,AddressOf_Click'绑定事件处理程序EndWith'将button丢进collection'ButtonCollection里面存放的是所有新建的buttonButtonCollection.Add(NewButton,"Button"&ButtonID)'"Button"&ButtonID是KeyMe.Controls.Add(NewButton)'添加进fromDimDelToolStripButtonAsNewToolStripButtonDelToolStripButton.Text="删除Button"&ButtonIDDelToolStripButton.Tag=ButtonID'这里是标识ToolStripSplitButton1.DropDownItems.Add(DelToolStripButton)AddHandlerDelToolStripButton.Click,AddressOfDelButtonEndSubSubDelButton(ByValsenderAsObject,ByValeAsSystem.EventArgs)DimButtonIDAsIntegerButtonID=sender.Tag'获取标识DimNowButtonAsButtonNowButton=ButtonCollection("Button"&ButtonID)'获取buttonRemoveHandlerNowButton.Click,AddressOfDelButton'移除绑定事件Me.Controls.Remove(NowButton)'删除按键NowButton.Dispose()'销毁ButtonCollection.Remove("Button"&ButtonID)'将集合里面的对应项删除掉ToolStripSplitButton1.DropDownItems.Remove(sender)'移除菜单里面的删除按钮EndSub

解决方案七:
通过Control.Controls属性,可以遍历所有的control。Lz可以这样,凡是动态添加的Control,都从自己的Control类继承,然后遍历Form.Controls集合去删除它。
解决方案八:
QQRN(笨QQ-馊主意提供者)的代码很成功!我已经理解你的算法,下面的工作在你的算法基础上进行改进。mooniscrazy(月色疯狂)哥的建议不错,我最开始是这样想的,但是当按钮达到上百个,删除其中的一个是很困难的,(说白了是我不会写)!感谢大家的支持!不知大家用过华为T2000网管没有,按钮类似于T2000网管中的网元,网元(按钮)对象可移动,这个功能我已经实现,创建网元(按钮),Me.Controls.Add(Button1)就可以搞定,但是删除其中的一个按钮(网元)我就不会了。sp1234(软件劫持和盗号:人傻钱多速来)哥的话可以理解,但是很多事不能轻易放弃!因为大家做的事属科研工作,难度是很大的,在需求分析上,我定义为可行,就因一点困难就后退,你们口口声声的创业,也就是一句空话!

时间: 2024-10-30 16:56:57

请高人指点,VB.net动态对象创建与删除,并且该对象拥有很强的扩展性,我的代码,就是无法实现删除功能!的相关文章

代码-关于vb.net反编译的问题---请高人指点

问题描述 关于vb.net反编译的问题---请高人指点 背景:使用asp.net做前台页面,后台代码是vb.net.之后使用VS发布网站.发布网站的时候将所有资源(包括aspx/aspx.vb/js/resource等等吧)都打包为DLL.在网站的Bin目录下. 任务:需要将Bin目录下的DLL反编译后获得代码,之后再编译得到代码生成DLL后放到网站发布的Bin目录下.之后重启IIS服务,网站可以正常运行.也就是说页面可以显示出来. 遇到的问题.使用Reflactor反编译代码后,得到vb.ne

VB.NET做的windows服务不能自动.启动;请高人指点

问题描述 我试着将一些一直要的事情用VB.NET做成WINDOWS系统服务.并注册服务也成功,功能也正常.但是,在服务管理的时候将其"启动类型"改为"自动";但是,重新启动操作系统后,发现服务并没有自动启动,即便是让它在启动失败后自动重新启动.按照cSDN中的说法:启动onstart的操作时间不超过30秒.我也修正了;即使ONSTART中只有一个动作(如下边的代码),也不行.请高人指点我一下,非常感谢.ProtectedOverridesSubOnStart(ByV

c++ 编程问题-请高人指点一下这段代码的执行过程,不胜感激

问题描述 请高人指点一下这段代码的执行过程,不胜感激 请您帮忙分析一下以下代码的执行过程,在下在编译器上跑了一遍,可还是不太明白,希望能得到您的详尽的解释,谢谢! #include using namespace std; class Shape { public: Shape(){} virtual ~Shape() {} virtual float Area() const=0; virtual Shape * Clone() const=0; }; class Circle:public

会员共享-多个网站之间如何共享会员帐户及基本信息?请高人指点

问题描述 多个网站之间如何共享会员帐户及基本信息?请高人指点 两个地方门户网站,相互独立,目前有意向合作,让会员之间可以相互登录帐号,这是第一步:以后如何服务能够跟上的话或者效果不错的,可以会员信息共享,甚至活动记录等信息都可以. 目前,准备用接口使会员相互可以登录,不知道如何做是比较安全一点的! 如果可以以后的话,是否有更好的办法? 请多多指点? 解决方案 http://baike.baidu.com/link?url=ZOaUxiONDY8YrxKAajD9jXFqA8EVukdyDvegz

wpf 3 5启动报错-WPF程序,framework 3.5 sp1环境,启动程序报错,4.0的就没事,请高人指点

问题描述 WPF程序,framework 3.5 sp1环境,启动程序报错,4.0的就没事,请高人指点 {"未能加载文件或程序集"PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"或它的某一个依赖项.该模块应包含一个程序集清单."} 该问题如何能解 请遇到过此问题的同仁指点

用VB接收了串口数据后,在坐标图上动态显示的问题,求高人指点 #VB新手#

问题描述 用VB接收了串口数据后,在坐标图上动态显示的问题,求高人指点 #VB新手# 本程序串口数据能接收,坐标图(转速-时间)也画好了,问题在用Pset打点连线中,Pset(xy)中,怎样把最新的数据放入y,并且在超过x轴范围后自动清屏重打或者消隐,程序在链接里面,在线等 解决方案 不过不需要自己去画,可以用mscharthttp://blog.163.com/wzhxxt@126/blog/static/4189356320121051510832/直接绑定你的数组就可以了. 解决方案二:

请高人指点c#调用exe的处理

问题描述 我要用c#调用exe的安装包,调用后会弹出是和否的确认框,确认后才安装,我怎么实现直接用c#调用后直接安装啊,可以跳过确认框直接安装吗?请高人指点 解决方案 解决方案二:跳不过去解决方案三:用api的findwindow,加枚举句柄,然后发送点击消息(或模拟点击)解决方案四:引用2楼bdmh的回复: 用api的findwindow,加枚举句柄,然后发送点击消息(或模拟点击) 只有这个办法了...解决方案五:不能跳过确认框,都需要用户操作的.我都是使用进程打开exe文件的.System.

if else if-下面这段程序为什么运行到选择if语句就不行了,只能运行到输入分数,请高人指点

问题描述 下面这段程序为什么运行到选择if语句就不行了,只能运行到输入分数,请高人指点 include int main(void) { float score; printf("请输入你的考试成绩:n"); scanf("%f", score); if(score > 100) printf("白日做梦n"); else if(score>=90 && score<=100) printf("优n&q

我在myeclipse搭建android时出的问题,请高人指点

问题描述 我在myeclipse搭建android时出的问题,请高人指点 我是myeclipse8.5,最近在网上找了帖子搭建安卓的开发环境,在help---myeclipse configuration center--software 点击add site 在弹出的对话框中输入的URL地址https:/dl-ssl.google.com/android/eclipse去更新插件就是不成功,会报错,错误代码如下,请高人指点一下 myeclipse8.5要如何才能搭建安卓的开发环境呢?? 解决方