无法正确读取menuitem的visible属性

时间:2014-07-29 15:04:45

标签: vb.net .net-4.0

在以下代码中,IF语句:

If mnuSubItem1.Visible = False And mnuSubItem2.Visible = False Then
    mnuMainMenuItem.Visible = False
End If

无论subitem1和subitem2的可见状态如何,始终结果为true? If mnuSubItem1.visible = true and mnuSubItem2.visible = false IF语句中的代码仍然执行。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

我认为您使用此项目作为子菜单项,如下所示:

mnuMainMenuItem - > mnuSubItem1& mnuSubItem2

当mnuMainMenuItem关闭时,mnuSubItem1& 2不可见。所以程序决定执行if语句。

Visible = False

Visible = True

使用此代码来实现目标:

mnuMainMenuItem.ShowDropDown()
If mnuSubItem1.Visible = False And mnuSubItem2.Visible = False Then
    mnuMainMenuItem.Visible = False
End If
mnuMainMenuItem.HideDropDown()

答案 1 :(得分:1)

这里并不是100%清楚该声明的意图是什么 - 你可能犯了一个共同的逻辑错误。但我可以提出两个可能有用的选择。试试这个:

If Not mnuSubItem1.Visible AndAlso Not mnuSubItem2.Visible Then
    mnuMainMenuItem.Visible = False
End If

或者这个:

If Not mnuSubItem1.Visible OrElse Not mnuSubItem2.Visible Then
    mnuMainMenuItem.Visible = False
End If

根据编辑,我们可以尝试反向,甚至完全消除IF:

mnuMainMenuItem.Visible = mnuSubItem1.Visible OrElse mnuSubItem2.Visible