菜单项可见性问题 [英] menu item visibility problem

查看:71
本文介绍了菜单项可见性问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!

这在菜单条可见性中没有什么问题
该语句正在执行,但可见性也发生了变化


 开关(A)
               {
                   案例  1 :

                       MessageBox.Show(" );
                       ModuleManagementToolStripMenuItem.Visible =  true ;
                       addNewModuleMenuItem.Visible =  true ;
                        break ;
                   案例  2 :
                       MessageBox.Show(" );
                       RoleManagementMenuItem.Visible =  true ;
                       AddNewRoleMenuItem.Visible =  true ;
                        break ;
                   案例  3 :
                       FunctionManagementMenuItem.Visible =  true ;
                       AddNewFunctionAMenuItem.Visible =  true ;
                       AddNewFunctionBMenuItem.Visible =  true ;
                       MessageBox.Show(Hello3);
                    默认:
Messagebox(" ); 

解决方案

我所看到的所有语句都使项目可见.您是否在其他地方使它们不可见?因为如果您从未使它们不可见,它们将永远不会改变...



在另一个菜单条上是它"

因此,我创建了一个非常简单的示例:新表单.添加了一个菜单栏,在菜单栏上提供了三个项目:

using System;
using System.Windows.Forms;
namespace Testing
    {
    public partial class Form1 : Form
        {
        private int mode = 0;
        public Form1()
            {
            InitializeComponent();
            }
        private void menuToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
            {
            switch (mode)
                {
                case 0:
                    item1ToolStripMenuItem.Visible = true;
                    item2ToolStripMenuItem.Visible = true;
                    item3ToolStripMenuItem.Visible = false;
                    break;
                case 1:
                    item1ToolStripMenuItem.Visible = false;
                    item2ToolStripMenuItem.Visible = true;
                    item3ToolStripMenuItem.Visible = true;
                    break;
                case 2:
                    item1ToolStripMenuItem.Visible = true;
                    item2ToolStripMenuItem.Visible = false;
                    item3ToolStripMenuItem.Visible = true;
                    break;
                }
            mode++;
            if (mode > 2)
                {
                mode = 0;
                }
            }
        }
    }

完全符合我的期望:一次可以看到三个菜单项中的两个菜单项.

这与您的代码有何显着区别?至少创建枚举类型.这样的风格会让你无处可去.

—SA


hi to all!

here is little problem in the menu strip visibility
the statement is executing but the visibility dosent change


switch (A)
               {
                   case 1:

                       MessageBox.Show("Hello1");
                       ModuleManagementToolStripMenuItem.Visible = true;
                       addNewModuleMenuItem.Visible = true;
                       break;
                   case 2:
                       MessageBox.Show("Hello2");
                       RoleManagementMenuItem.Visible = true;
                       AddNewRoleMenuItem.Visible = true;
                       break;
                   case 3:
                       FunctionManagementMenuItem.Visible = true;
                       AddNewFunctionAMenuItem.Visible = true;
                       AddNewFunctionBMenuItem.Visible = true;
                       MessageBox.Show(Hello3);
                    default:
Messagebox("No items are there");

解决方案

All I see there are statements making items visible. Are you making them invisible somewhere else? Because if you never make them invisible, they will never change...



"ya its on another menustrip item"

So, I created a very simple example: new form. Added a menustrip, provided three items on the strip:

using System;
using System.Windows.Forms;
namespace Testing
    {
    public partial class Form1 : Form
        {
        private int mode = 0;
        public Form1()
            {
            InitializeComponent();
            }
        private void menuToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
            {
            switch (mode)
                {
                case 0:
                    item1ToolStripMenuItem.Visible = true;
                    item2ToolStripMenuItem.Visible = true;
                    item3ToolStripMenuItem.Visible = false;
                    break;
                case 1:
                    item1ToolStripMenuItem.Visible = false;
                    item2ToolStripMenuItem.Visible = true;
                    item3ToolStripMenuItem.Visible = true;
                    break;
                case 2:
                    item1ToolStripMenuItem.Visible = true;
                    item2ToolStripMenuItem.Visible = false;
                    item3ToolStripMenuItem.Visible = true;
                    break;
                }
            mode++;
            if (mode > 2)
                {
                mode = 0;
                }
            }
        }
    }

This does exactly what I would expect: cycles with two out of three menu items visible at any one time.

How is this significantly different from your code?


Just a note: using integer 1, 2 and 3 for a switch has nothing to do with good programming, not even acceptable. At least create enumeration type. Such style will lead you nowhere.

—SA


这篇关于菜单项可见性问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆