以文本方式查看主题

-  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
    If typeof pl Is winform.panel Then
        Dim s As Graphics = pl.Graphics
        s.Clear(Color.White)
        pl.Repaint
    End If
Next


--  作者:晕了快扶我
--  发布时间:2017/1/11 15:44:00
--  
我把Demo传上来了,有点色老师指点一下吧,我主要的目的是点击的房有勾,没点的没勾
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:demo.zip


--  作者:晕了快扶我
--  发布时间: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编辑过]