我最近将VB 6项目升级到.net.我遇到了这段代码的问题:
Dim CtrlName As System.Windows.Forms.MenuItem
For Each CtrlName In Form1.Controls
'Some code here
Next CtrlName
Run Code Online (Sandbox Code Playgroud)
现在这段代码编译但抛出以下运行时错误:
无法将类型为"System.Windows.Forms.Panel"的对象强制转换为"System.Windows.Forms.MenuItem".
我在主题表格上有一个面板控件.我该如何解决这个问题?谢谢.
您正在迭代直接在表单内的所有控件,而不仅仅是MenuItem
s.但是,您的变量是类型MenuItem
.这导致了这个问题.
对于普通控件(例如Button
s),您需要使用以下,轻松修复; 在循环内测试控件类型是否正确:
For Each control As Control In Form1.Controls
Dim btt As Button = TryCast(control, Button)
If btt IsNot Nothing Then
' Perform action
End If
Next
Run Code Online (Sandbox Code Playgroud)
然而,这并没有对工作的MenuItem
小号,因为它们是在所有的WinForms控件,它们不是存储形式在Controls
集合.
您需要迭代表单的Menu.MenuItems
属性.
归档时间: |
|
查看次数: |
820 次 |
最近记录: |