加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 设计时重绘

发布时间:2020-12-17 07:10:59 所属栏目:百科 来源:网络整理
导读:我创建了一个自定义列表视图控件.每次添加新列时,我都会将其设置为添加新按钮. 当我运行包含我的自定义控件的程序时,列按钮正确放置.但是,在设计时,当我添加或删除列时,控件不会更新添加的按钮. 它们在运行时是正常的,但在设计时我需要关闭表单并重新打开它(
我创建了一个自定义列表视图控件.每次添加新列时,我都会将其设置为添加新按钮.
当我运行包含我的自定义控件的程序时,列按钮正确放置.但是,在设计时,当我添加或删除列时,控件不会更新添加的按钮.

它们在运行时是正常的,但在设计时我需要关闭表单并重新打开它(强制重新绘制)以更新列按钮.
如何以编程方式强制重绘用户控件?
?Column属性如下所示:

<MergableProperty(False)> _
   <Editor("System.Windows.Forms.Design.ColumnHeaderCollectionEditor,System.Design,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a",GetType(UITypeEditor))> _
   <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
   <Localizable(True)> _
    Public ReadOnly Property Columns() As ListView.ColumnHeaderCollection
        Get
            Return ListView1.Columns
        End Get
    End Property

我试图像这样重绘控件:

Me.Invalidate()
   Dim x As New Rectangle With {.X = Me.Location.X,.Y = Me.Location.Y,.Size = Me.Size}
   Me.NotifyInvalidate(x)

但由于某些原因,它不起作用.在设计时,每次添加一列时,都不会添加相应的按钮.

解决方法

只是一个简单的想法,可能不是最好的解决方案,但它并没有伤害尝试,我猜它的工作,即使我说,这不是最好的方法.

在用于添加/删除列的Sub中,添加以下内容:

Dim Graphics As Graphics = [yourform].CreateGraphics
Dim ParamArg As New PaintEventArgs(Graphics,[yourform].ClientRectangle)
InvokePaint(Me,ParamArgs)

每次添加/删除时,这将强制执行令人讨厌的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读