vb.net - 重新创建 GUI 控件
问题描述
我正在使用一个名为 VideoCapX 的视频捕获控件,但我遇到了一个错误,经过数小时的调试,我确定修复故障的唯一方法是重新启动程序。重置控制。
我想知道是否有任何方法可以以编程方式重新创建 GUI 控件,也就是将其重置为表单打开时的状态。
我知道这是一个便宜的解决方案,但在这一点上,这是我唯一的选择。
解决方案
一般来说,这会起作用:
Me.SomeControl1.Dispose()
Me.SomeControl1 = New SomeControl
'Configure SomeControl1 here.
Me.Controls.Add(Me.SomeControl1)
SomeControl1
在设计时将控件添加到表单时自动创建的字段在哪里。第一行从窗体中删除现有控件,第二行用相同类型的新控件替换现有控件,最后一行将新控件添加到窗体中。您需要在两者之间设置新控件的适当属性,因此您可能希望保留旧控件以从中获取所需的属性值,例如
Dim newControl As New SomeControl
'Configure newControl here, e.g.
newControl.Location = Me.SomeControl.Location
Me.SomeControl1.Dispose()
Me.SomeControl1 = newControl
Me.Controls.Add(Me.SomeControl1)
请注意,将新控件分配给现有字段将自动使用 Handles 子句连接任何事件处理程序。
也就是说,您正在使用可能是相当复杂的自定义控件这一事实,很难说是否还有其他一些必需的步骤。
推荐阅读
- python - 继承一个函数后如何给它更多参数
- typescript - 将类型存储为字典键
- angular - 如何创建 Angular 4 组件以用于多个 Angular 4 项目?不是角 6
- postgresql - 无论“connect_timeout”如何,Postgresql WalReceiver 进程都会等待连接主机
- reactjs - 使用道具传播的 Thunk 问题加载 HOC
- node.js - 使用 ffmpeg 与 facebook rtmps 传输问题的 GoLive
- json - 如何将谷歌云视频智能结果的 json 文件获取到谷歌云存储桶中
- python-2.7 - 如果一个代理很好,那么如何只坚持该代理直到被禁止然后移动到另一个代理,在scrapy-proxy-rotation中?
- android - 回调和更新数据
- c++ - 将引用作为函数参数传递不起作用