VB.NET中关于菜单的问题

松果工作室 2004-12-16 10:30:39
我想将MDI主窗体中的全部菜单的菜单名称(Name)和菜单标题(Text)存储到数据库表中去。为此,我写了一个过程,递归调用:
Private Sub ShowAllMenu(ByVal miMenuItem As MenuItem)
'怎么显示菜单的名称?
MessageBox.Show(miMenuItem.Text)
If miMenuItem.MenuItems.Count <> 0 Then
Dim miTest As MenuItem
For Each miTest In miMenuItem.MenuItems
ShowAllMenu(miTest)
Next
End If
End Sub

  '//保存按钮的单击事件:
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim miMenuItem As MenuItem
For Each miMenuItem In Me.MainMenu1.MenuItems
ShowAllMenu(miMenuItem)
Next
End Sub

通过种方法,我可以显示全部菜单的标题(Text),可miMenuItem却没有Name属性。请问如何显示出菜单的名称?
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
龍过鸡年 2004-12-16
  • 打赏
  • 举报
回复
不好意思~~~ 没给对!

Import System.Reflection;

Dim infoAry() As PropertyInfo = menuItem.GetType().GetProperties()
Dim info As PropertyInfo

For Each info In infoAry

Console.WriteLine (info.Name)

Next
龍过鸡年 2004-12-16
  • 打赏
  • 举报
回复
哦~~ 写成 C# 的了 :p

Import System.Reflection;

PropertyInfo infos() = menuItem.GetType().GetProperties()

For Each PropertyInfo info In infos

Console.WriteLine (info.Name)

Next
龍过鸡年 2004-12-16
  • 打赏
  • 举报
回复
返回一个对象的所有属性:

using System.Reflection;

PropertyInfo[] infos = menuItem.GetType().GetProperties();
foreach(PropertyInfo info in infos)
{
Console.WriteLine(info.Name);
}

我建议你想别的办法,比如用动态属性 - DynamicProperties
youwanna 2004-12-16
  • 打赏
  • 举报
回复
你的菜单不是自动生成的,开始就可以直接写死
如果是自动生成的,根据如何生成,应该也可以来写吧
松果工作室 2004-12-16
  • 打赏
  • 举报
回复
继承?提供了一个思路。但添加个Name属性是容易,可这个属性代码里怎样写才能获取菜单的名称?
youwanna 2004-12-16
  • 打赏
  • 举报
回复
不知道,大不了自己写个继承的MenuItem,里面加个属性

帮兄弟顶下

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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