请高人指点,VB.net动态对象创建与删除,并且该对象拥有很强的扩展性,我的代码,就是无法实现删除功能!
--------------------编程问答-------------------- “很强的扩展性”原来如此啊。 --------------------编程问答-------------------- 别在“xxxx元”这个地方打转转了,做点实际的项目。除非你只是想靠这个在学校里弄点声誉。步入社会,这种纠结出来的“扩展性”其实什么也不是。扩展性体现在很大很深入的行业软件应用架构方面,而小的东西如果抠不出来就不要再抠了。
其实这种东西很简单,但是不适合学生去抠。带着真正实际的应用环境再来看这类问题,几分钟就可以解决。 --------------------编程问答-------------------- 专家说的是呀!但我不是学生,是个偷懒的人,工作上的事,能叫别人做尽量叫别人做,尽可能叫电脑去做,不愿意做我就托,呵呵呵,但这个事还是为了方便工作的,能帮我一下吗? --------------------编程问答-------------------- 楼主威武!!!
你做的东西是show个from2,然后from2给from1的Button2赋个新的Button(你很强大)
删除时候根据Button2的text判断添加进去的Button并将其删除
你每按一次Form2的Button1都只会给Form1的Button2换个新的Button(这句话咋这么别扭),
Form1.Button2.text始终记录的是最后一次换上去的值,
你靠这个判断,肯定只能删除最后一次添加的Button。
说话真别扭。。。。。。。。。 --------------------编程问答-------------------- 参考
--------------------编程问答-------------------- 通过Control.Controls属性,可以遍历所有的control。
Dim ButtonCollection As New Collection
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ToolStripSplitButton1.Text = "删除"
ToolStripSplitButton1.DisplayStyle = ToolStripItemDisplayStyle.Text
Dim Button1 As New Button
Button1.Text = "添加按钮"
AddHandler Button1.Click, AddressOf AddButton
Button1.Location = New Point(100, 100)
Me.Controls.Add(Button1)
End Sub
Sub AddButton(ByVal sender As Object, ByVal e As System.EventArgs)
Dim NewButton As New Button
Static Dim ButtonID As Integer = 0
ButtonID += 1
With NewButton
.Location = New Point(10, ButtonID * 40) 'New Point(Form1.Label1.Text, Form1.Label2.Text)
.Size = New System.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 '绑定事件处理程序
End With
'将button丢进collection
'ButtonCollection里面存放的是所有新建的button
ButtonCollection.Add(NewButton, "Button" & ButtonID) '"Button" & ButtonID 是Key
Me.Controls.Add(NewButton) '添加进from
Dim DelToolStripButton As New ToolStripButton
DelToolStripButton.Text = "删除 Button" & ButtonID
DelToolStripButton.Tag = ButtonID '这里是标识
ToolStripSplitButton1.DropDownItems.Add(DelToolStripButton)
AddHandler DelToolStripButton.Click, AddressOf DelButton
End Sub
Sub DelButton(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ButtonID As Integer
ButtonID = sender.Tag '获取标识
Dim NowButton As Button
NowButton = ButtonCollection("Button" & ButtonID) '获取button
RemoveHandler NowButton.Click, AddressOf DelButton '移除绑定事件
Me.Controls.Remove(NowButton) '删除按键
NowButton.Dispose() '销毁
ButtonCollection.Remove("Button" & ButtonID) '将集合里面的对应项删除掉
ToolStripSplitButton1.DropDownItems.Remove(sender) '移除 菜单里面的删除按钮
End Sub
Lz可以这样,凡是动态添加的Control,都从自己的Control类继承,然后遍历Form.Controls集合去删除它。 --------------------编程问答-------------------- QQRN(笨QQ-馊主意提供者) 的代码很成功!我已经理解你的算法,下面的工作在你的算法基础上进行改进。
mooniscrazy(月色疯狂) 哥的建议不错,我最开始是这样想的,但是当按钮达到上百个,删除其中的一个是很困难的,(说白了是我不会写)!感谢大家的支持!不知大家用过华为T2000网管没有,按钮类似于T2000网管中的网元,网元(按钮)对象可移动,这个功能我已经实现,创建网元(按钮), Me.Controls.Add(Button1)就可以搞定,但是删除其中的一个按钮(网元)我就不会了。
sp1234(软件劫持和易做图:人傻钱多速来) 哥的话可以理解,但是很多事不能轻易放弃!因为大家做的事属科研工作,难度是很大的,在需求分析上,我定义为可行,就因一点困难就后退,你们口口声声的创业,也就是一句空话!
补充:企业软件 , 中间件