winform ,如何在点击menuStrip的某些Item时,不收回而保持展开状态

qq_31812171 2017-05-19 08:40:11
做练习的时候发现源码可以实现如题的效果,自己却做不出。是和属性相关吗?

点击“1.2”,可以显示或隐藏“一、二、三”
这是我的代码
public partial class Form1 : Form
{
int i = 2;
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
this.一ToolStripMenuItem.Visible = false;
this.二ToolStripMenuItem.Visible = false;
this.三ToolStripMenuItem.Visible = false;
}

private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
switch (i)
{
case 1:
this.一ToolStripMenuItem.Visible = false;
this.二ToolStripMenuItem.Visible = false;
this.三ToolStripMenuItem.Visible = false;
i = 2;
this.toolStripMenuItem4.ShowDropDown();
break;

case 2:
this.一ToolStripMenuItem.Visible = true;
this.二ToolStripMenuItem.Visible = true;
this.三ToolStripMenuItem.Visible = true;
i = 1;
this.toolStripMenuItem4.ShowDropDown();
break;
}
}
}
...全文
535 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2017-05-19
  • 打赏
  • 举报
回复
你的逻辑 和 menustrip 的逻辑 已经存在冲突 menustrip的逻辑是 一个菜单项被点下 就消失 如果你想实现你的效果 更好的方式是 把你的 “一 二 三” 放入1.2 的子菜单里面 这样 默认 菜单被点开的时候 是看不到 一二三的 而需要把鼠标放入 1.2 才会在右边显示出来一二三 而且远比你这个方便简洁
xdashewan 2017-05-19
  • 打赏
  • 举报
回复
这是控件默认行为,很可能需要继承StripMenu,然后使用WndProc截获windows左键的消息,然后自己处理,我也没试过,你可能要自己尝试
qq_31812171 2017-05-19
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
事件toolStripMenuItem4_Click你绑定了吗
绑定了。点击toolStripMenuItem4也可以对“一、二、三”进行显示,再次点击也可以隐藏。但是每点击一次toolStripMenuItem4,菜单都不能保持展开
xdashewan 2017-05-19
  • 打赏
  • 举报
回复
事件toolStripMenuItem4_Click你绑定了吗
qq_31812171 2017-05-19
  • 打赏
  • 举报
回复
引用 4 楼 crystal_lz 的回复:
你的逻辑 和 menustrip 的逻辑 已经存在冲突 menustrip的逻辑是 一个菜单项被点下 就消失 如果你想实现你的效果 更好的方式是 把你的 “一 二 三” 放入1.2 的子菜单里面 这样 默认 菜单被点开的时候 是看不到 一二三的 而需要把鼠标放入 1.2 才会在右边显示出来一二三 而且远比你这个方便简洁
我也是这么想的,就是在做练习

110,538

社区成员

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

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

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