Foxtable(狐表)用户栏目专家坐堂 → [求助]单击菜单组件函数问题


  共有2671人关注过本帖树形打印复制链接

主题:[求助]单击菜单组件函数问题

帅哥哟,离线,有人找我吗?
pcxjxjhkw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
[求助]单击菜单组件函数问题  发帖心情 Post By:2016/12/5 16:45:00 [显示全部帖子]

如何写一函数:

单击菜单上任意一组件,返回该组件的上一级,直至最顶级。如单击【打开】,返回:主菜单\功能区\功能组\...\...\打开。有可能是多级组合按钮。

 

[此贴子已经被作者于2016/12/7 13:20:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/5 19:09:00 [显示全部帖子]

以下是引用有点蓝在2016/12/5 17:22:00的发言:
Dim r As object = BaseMainForm.controls("C1Ribbon1")
Dim mu  = r.Tabs("Common").Groups("Data").Items("AddRow").Items("AddRow")
Output.Show(mu.text)
Output.Show(mu.Parent.text)
Output.Show(mu.Parent.parent.text)
Output.Show(mu.Parent.parent.Tab.text)

1.r的级数不确定哟,如何判断已返回到最高一级tab?

2.如何将Sender写入函数中?

3.单击的可能是功能区、程序菜单、快速访问栏、配置栏、上工具栏、下工具栏、快捷菜单中的某一组件,也可能是一窗口中的组件,如何判断所单击的组件属于哪一类?

 

谢谢了

[此贴子已经被作者于2016/12/5 19:37:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/5 23:28:00 [显示全部帖子]

Dim e As  Object = Args(0)  '''单击的菜单组件
Dim str As String = e.Sender.Name
''''
Dim a As  Object = e.Sender.Parent

Do While a Is Nothing
    a = a.Sender.Parent.Name
    str = str & "\" & a.Name
Loop


Return str


'''此函数想实现:单击菜单的某一组件,返回该组件的所有父级.,可快捷定位单击的组件.
但Parent报错误,请狐爸及各位老师指导,谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 9:23:00 [显示全部帖子]

或者,狐爸给每个组件一个唯一ID


 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 10:09:00 [显示全部帖子]

以下是引用有点色在2016/12/6 10:04:00的发言:

 

你命名规范不就好了。各种控件,命名为对应的层级关系,如 功能区1_功能组2_某某控件

也有弊病,改动一处,就要全部改动。

 

最好有Parent属性。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 10:58:00 [显示全部帖子]

各位老师,问题还没解决呀!

 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 11:10:00 [显示全部帖子]

以下是引用有点色在2016/12/6 11:07:00的发言:

 

那你可以一次性获取所有的菜单元素,根据表结构,查询到你对应的东西。看4楼。

没明白,老师


 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 11:46:00 [显示全部帖子]

以下是引用pcxjxjhkw在2016/12/5 23:28:00的发言:

Dim e As  Object = Args(0)  '''单击的菜单组件
Dim a As  Object = e.Sender.Parent

 

如何给a赋Tag值,又如何获取它的Tag值?

 

多谢


 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 11:55:00 [显示全部帖子]

Dim r As object = BaseMainForm.controls("C1Ribbon1")

For Each tab As RibbonMenu.Tab In RibbonTabs
    '  tab.tag = "\" &  tab.Name
    '  Output.Show(tab.Name)
    For Each grp As RibbonMenu.Group In RibbonTabs(tab.Name).Groups
        ' grp.tag = "\" &  tab.Name & "\" & grp.Name
        '   Output.Show("  " & grp.Name)
        For Each itm As RibbonMenu.RibbonItem In RibbonTabs(tab.Name).Groups(grp.Name).Items
            '  Output.Show("    " & itm.Name)
             ' itm.tag = "\" &  tab.Name & "\" & grp.Name & "\" & itm.Name
            Dim a  = r.Tabs(tab.Name).Groups(grp.Name).Items(itm.Name)
            a.tag = "程序菜单\" &  tab.Name & "\" & grp.Name & "\" & itm.Name
            MessageBox.Show(a.tag)
        Next
    Next
Next

 

 

以上可以赋值tag, 问题是如何读取当前所单击组件的tag???

[此贴子已经被作者于2016/12/6 11:57:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
pcxjxjhkw
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
  发帖心情 Post By:2016/12/6 12:05:00 [显示全部帖子]

网上找的资料

 

C#~如何获得选中的菜单项的Tag值。
C#~如何获得选中的菜单项的Tag值。


------解决方案--------------------

C# code
private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
    ToolStripMenuItem item = sender as ToolStripMenuItem;
    if(item.Tag != null)
    {
        Console.WriteLine(item.Tag);
    }
}

------解决方案--------------------
ItemClicked事件ItemClicked(object sender, ToolStripItemClickedEventArgs e)

 回到顶部
总数 13 1 2 下一页