gpt4 book ai didi

.net - 设计时重绘

转载 作者:行者123 更新时间:2023-12-02 23:42:20 25 4
gpt4 key购买 nike

我创建了一个自定义listview控件。我将其设置为每次添加新列时都添加一个新按钮。
当我运行包含自定义控件的程序时,列按钮放置正确。但是,在设计时,当我添加或删除列时,控件不会更新添加的按钮。

它们在运行时没问题,但在设计时我需要关闭表单并重新打开它(强制重新绘制)以更新列按钮。
如何以编程方式强制重绘我的用户控件?
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)

这将迫使讨厌的东西在每次添加/删除时都会自行绘制。

关于.net - 设计时重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com