我有多个图片框,我需要在运行时加载随机图像.因此我认为拥有所有图片框的集合然后使用简单的循环将图像分配给它们会很好.但是我应该怎么做呢?或许还有其他更好的解决方案可以解决这个问题吗?
我有一个带有"清除"按钮的表单.
当用户单击"清除"时,我想清除表单上所有可见元素的值.在日期控件的情况下,我想将它们重置为当前日期.
我的所有控件都包含在Panel中.
现在,我正在使用以下代码执行此操作.有没有比手动检查每种控件类型更简单的方法?这种方法似乎过于笨拙.
更糟糕的是,为了递归清除子容器内的控件(即面板中的组合框),我必须用重载的"GroupBox"版本重复整个怪物.
编辑:感谢您的建议,以下代码大大简化.
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
'User clicks Clear, so clear all the controls within this panel
ClearAllControls(panMid, True) 'True indicates that yes, i want to recurse through sub-containers
End Sub
ClearAllControls(ByRef container As Panel, Optional Recurse As Boolean = True)
'Clear all of the controls within the container object
'If "Recurse" is true, then also clear controls within any sub-containers
Dim ctrl As Control
For Each ctrl …Run Code Online (Sandbox Code Playgroud) 在VB6中有一个名为Control Arrays的功能,您可以在其中为控件命名相同的名称并为其提供索引值.这允许您通过循环控件和设置每个值来设置值.在VB .NET中我无法创建控件数组,有人可以为我提供类似的解决方案.
我正在尝试创建一个foreach循环来检查面板中的每个TextBox,如果Text没有,则更改BackColor.我尝试过以下方法:
Dim c As TextBox
For Each c In Panel1.Controls
if c.Text = "" Then
c.BackColor = Color.LightYellow
End If
Next
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误:
无法将System.Windows.Forms.Label类型的对象强制转换为System.windows.forms.textbox类型