以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Panel控件有什么特殊的地方吗? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101017) |
-- 作者:Hopenight -- 发布时间:2017/5/23 17:21:00 -- Panel控件有什么特殊的地方吗? 我在程序中想给Panel边框重绘一下颜色,用自己的处理函数绑定了Panel控件的Paint事件。如下: Public Shared Sub OwnDrawBorder(ByRef panel As WinForm.Panel) Dim panelBase As Panel = panel.BaseControl AddHandler panelBase.Paint, AddressOf Panel_DrawBorder End Sub Public Sub Panel_DrawBorder(sender As Object, e As PaintEventArgs) Dim panel As Panel = CType(sender, Panel) Const width As Integer = 1 ControlPaint.DrawBorder( e.Graphics, panel.ClientRectangle, Color.FromArgb(111, 157, 217), width, ButtonBorderStyle.Solid, Color.FromArgb(111, 157, 217), width, ButtonBorderStyle.Solid, Color.FromArgb(111, 157, 217), width, ButtonBorderStyle.Solid, Color.FromArgb(111, 157, 217), width, ButtonBorderStyle.Solid ) End Sub 但是跟踪了一下代码,貌似Panel控件的Paint事件并没有被触发。 难道狐表中的Panel控件基类不是标准的Panel控件吗?
|
-- 作者:有点色 -- 发布时间:2017/5/23 17:56:00 -- 你需要刷新控件
Dim p = Forms("窗口1").controls("panel1").basecontrol |
-- 作者:Hopenight -- 发布时间:2017/5/23 18:04:00 -- 以下是引用有点色在2017/5/23 17:56:00的发言: 你需要刷新控件
Dim p = Forms("窗口1").controls("panel1").basecontrol 试过了,refresh也没用 |
-- 作者:有点色 -- 发布时间:2017/5/23 18:07:00 -- 我测试有效
全局代码
Public Sub OwnDrawBorder(ByRef panel As WinForm.Panel) Public Sub Panel_DrawBorder(sender As Object, e As windows.forms.PaintEventArgs)
绑定事件
OwnDrawBorder(e.Form.controls("panel1"))
刷新调用pain事件
Dim a = Forms("窗口1").controls("panel1").basecontrol |
-- 作者:Hopenight -- 发布时间:2017/5/23 19:14:00 -- 找到原因了,在这个Panel放了个Table控件,且是Fill的 结果就...
|
-- 作者:有点蓝 -- 发布时间:2017/5/23 20:28:00 -- |