【诡异的false】C#菜单项的visible一直是false,强制为true也没用

redcn2004 2012-09-07 04:24:07
代码如下:

            returnValue = this.ModuleIsVisible(moduleCode);(为true)
toolStripMenuItem.Visible = returnValue; (赋值给菜单项的visible)
bool t = returnValue;(t为true)
bool s = toolStripMenuItem.Visible;(s为false)



不知道是啥原因?
...全文
1016 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.visible.aspx

如果容器控件不会呈现,它包含的任何控件不会呈现,即使您设置单个控件的 Visible 属性设置为 true。 在这种情况下,独立控件返回 Visible 属性的 false ,即使您显式设置为 true。 (也就是说,如果父控件的 Visible 属性设置为 false,子控件继承该设置,并设置优先于任何本地设置。)

来自于msdn最好的解释
xiepanqi123 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 17 楼 的回复:

我刚刚也遇到这问题,提问居然没人鸟我...

帖子呢?
[/Quote]

http://topic.csdn.net/u/20120910/09/17872ca3-329c-48c8-af2e-92ad79639683.html
xiepanqi123 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 17 楼 的回复:

我刚刚也遇到这问题,提问居然没人鸟我...

帖子呢?
[/Quote]

http://topic.csdn.net/u/20120910/09/17872ca3-329c-48c8-af2e-92ad79639683.html
redcn2004 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

我刚刚也遇到这问题,提问居然没人鸟我...
[/Quote]
帖子呢?
xiepanqi123 2012-09-10
  • 打赏
  • 举报
回复
我刚刚也遇到这问题,提问居然没人鸟我...
redcn2004 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

我用了 主菜单那个控件 试了下 为什么可以了?
[/Quote]
这个就不懂了,后来采用变通的法子实现
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
MenuStrip 这个控件试了试迷得问题。
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
我用了 主菜单那个控件 试了下 为什么可以了?
redcn2004 2012-09-07
  • 打赏
  • 举报
回复
我找了一下这个文章:http://blog.excastle.com/2008/12/28/fixing-menustrip-part-2-visible-vs-available-and-a-repro-case/

还有这个文章:http://www.haogongju.net/art/730202,证明这是一个微软的bug。
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 9 楼 的回复:

InitializeComponent();这个和FrmMDI_Load 好像是相互进行的...在InitializeComponent()中你的 toolStripMenuItem.Visible=false ;所以我觉得 你不应该在load中修改他.....也没什么用处啊...load 就是第界面第一次显示的时候调用...
你可以在 show()中修改可见性……
[/Quote]
我自己用主菜单 试了下.....可以啊...
redcn2004 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

InitializeComponent();这个和FrmMDI_Load 好像是相互进行的...在InitializeComponent()中你的 toolStripMenuItem.Visible=false ;所以我觉得 你不应该在load中修改他.....也没什么用处啊...load 就是第界面第一次显示的时候调用...
你可以在 show()中修改可见性
[/Quote]
OK.我放到 窗体类初始化里面去判断
superliu1122 2012-09-07
  • 打赏
  • 举报
回复
只有菜单项显示出来以后Visible才为true,其他时候都是false
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
InitializeComponent();这个和FrmMDI_Load 好像是相互进行的...在InitializeComponent()中你的 toolStripMenuItem.Visible=false ;所以我觉得 你不应该在load中修改他.....也没什么用处啊...load 就是第界面第一次显示的时候调用...
你可以在 show()中修改可见性
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
这个不知道有什么影响我也. FrmMDI_Load......对于load还是有点混乱我....他和 那个什么 控件加载函数 好像是混起搞的,分不出先后....,你自己跟进去 试试...
redcn2004 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

那我也不明白了..............
toolStripMenuItem.Visible = true; (赋值给菜单项的visible)
再试试
[/Quote]


bool c = toolStripMenuItem.Enabled; (c为true)
toolStripMenuItem.Visible = true; (visible为false)
toolStripMenuItem.Visible = returnValue; (visible为false)
bool t = returnValue; (t为true)
bool s = toolStripMenuItem.Visible; (s为false)
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
那我也不明白了..............
toolStripMenuItem.Visible = true; (赋值给菜单项的visible)
再试试
redcn2004 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

toolStripMenuItem.Visible = returnValue; (赋值给菜单项的visible)
这里赋值没有成功/????
[/Quote]

是的,赋值没有成功。整个加载Menu的函数我是放在 FrmMDI_Load里面加载的
redcn2004 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

在这之前
toolStripMenuItem.Enable= 什么?????
[/Quote]

= true
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
在这之前
toolStripMenuItem.Enable= 什么?????
zhanglong19891129 2012-09-07
  • 打赏
  • 举报
回复
toolStripMenuItem.Visible = returnValue; (赋值给菜单项的visible)
这里赋值没有成功/????

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧