以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助,动态添加的控件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95150) |
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 15:32:00 -- 求助,动态添加的控件 For Each pl As WinForm.Panel In e.Form.Controls Dim s As Graphics = pl.Graphics s.Clear(Color.White) pl.Repaint Next 错误提示:无法将类型为“Foxtable.WinForm.SplitContainer”的对象强制转换为类型“Foxtable.WinForm.Panel”。 求助: 1.SplitContainer是直接添加的,Panel是用动态添加的,我想枚举我动态添加的Panel要怎么写啊? 2.用GDI添加的图片,如果在需要的删除掉? |
||||
-- 作者:有点色 -- 发布时间:2017/1/11 15:35:00 --
For Each pl As object In e.Form.Controls |
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 15:44:00 -- 我把Demo传上来了,有点色老师指点一下吧,我主要的目的是点击的房有勾,没点的没勾
|
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 15:47:00 -- 我只想去掉这个勾,不改变底色可以吗? [此贴子已经被作者于2017/1/11 15:48:30编辑过]
|
||||
-- 作者:有点色 -- 发布时间:2017/1/11 15:55:00 -- If e.Button =MouseButtons.Right \'如果是右键 If left(e.Sender.name,9) = "bx_Panel_" End If Else \'如果是左键 If left(e.Sender.name,9) = "bx_Panel_" Dim ary() As String = e.Sender.name.split("_") If e.sender.basecontrol.tag = "true" Then Dim g As Graphics = e.sender.Graphics g.Clear(Color.White) Dim fnt As New Font("宋体",14,FontStyle.Bold) g.DrawString(ary(ary.Length-1),fnt,Brushes.Blue,40,1) e.sender.Repaint() e.sender.basecontrol.tag = "false" Else Dim g As Graphics = e.sender.Graphics g.DrawImage(getImage("(01,10).png"),10,10) e.sender.Repaint() e.sender.basecontrol.tag = "true" End If End If End If |
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 15:57:00 -- 还是不行,我是点击一个房图,其他勾就去掉啊,其他的勾还在 |
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 15:59:00 -- 而且还有,这个依然会改变底色的啊,因为实际应用的过程中,房态比如在用,空,清洁,买单,等等这些是要用不同的颜色来表示的,去了底色肯定不行的 |
||||
-- 作者:有点色 -- 发布时间:2017/1/11 16:48:00 -- 无法撤销某一次的绘制,你必须重新把所有的都绘制一次,才行。 |
||||
-- 作者:有点色 -- 发布时间:2017/1/11 16:49:00 -- 结合2楼,结合5楼,根据你的需求修改你的代码。 |
||||
-- 作者:晕了快扶我 -- 发布时间:2017/1/11 18:02:00 -- 如果用添加一个picbox控件的做法来做,遍历,然后移除,再在当前添加和GDI相比,哪个效率会高一些呢? 另外再请教一下:f e.sender.basecontrol.tag = "true"这句是什么意思? [此贴子已经被作者于2017/1/11 18:05:00编辑过]
|