当前位置: 首页 > news >正文

新疆网站备案/百度正版下载恢复百度

新疆网站备案,百度正版下载恢复百度,做百度手机网站点,网站功能建设刚刚看了一个vb.net 实现动态菜单的例子。觉得很有意思。例子中用的主要技术有: 菜单树 的 操作 treeview的操作 利用堆栈实现菜单树与treeview树成员的对应 利用委托实现对象与事件的关联 因为我是初学者,所以有些词汇用得可能不恰当,另…

刚刚看了一个vb.net 实现动态菜单的例子。觉得很有意思。例子中用的主要技术有:

菜单树 的 操作

treeview的操作

利用堆栈实现菜单树与treeview树成员的对应

利用委托实现对象与事件的关联

因为我是初学者,所以有些词汇用得可能不恰当,另外有些理解也可能有偏差。

这个例子实现了,用户可以在当前菜单的任意一个节点上添加一个子菜单,并为添加的子菜单添加事件。

例子介绍如下:

首先创建一个 vb.net winform application

在form中添加一个菜单,取名为:MainItem,随便添加几个菜单项几项。

添加一个textbox控件, 取名为:txtNewText

添加一个listbox控件, 取名为:lstHandlers

添加一个TreeView控件,取名为:tvMenu

具体代码如下(其中有大部分代码为自动生成):

 

 

Public Class Form1
    
Inherits System.Windows.Forms.Form

Windows 窗体设计器生成的代码

    
Private eHandlers(3As EventHandler   '定义事件方法集合
    Private Sub ShowHelloWorld(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MessageBox.Show(
"Hello World!")
    
End Sub

    
Private Sub ShowMenuItemText(ByVal sender As System.Object, ByVal e As System.EventArgs)
        
Dim mItem As MenuItem
        mItem 
= CType(sender, MenuItem)
        MessageBox.Show(mItem.Text)
    
End Sub

    
Private Sub ShowMenuItemIndex(ByVal sender As System.Object, ByVal e As System.EventArgs)
        
Dim mItem As MenuItem

        mItem 
= CType(sender, MenuItem)
        MessageBox.Show(mItem.Index)
    
End Sub

    
Private Sub ShowCurDateTime(ByVal sender As System.Object, ByVal e As System.EventArgs)
        
Dim strDate As String = DateTime.Now.ToString()
        MessageBox.Show(strDate)
    
End Sub



    
Private Sub MenuItemToNode(ByVal menuItems As Menu.MenuItemCollection, ByVal targetNodes As TreeNodeCollection)
        
'TreeNodeCollection 代表一个树结点集合,每一个节点下的儿子节点的集合
        'MenuItemCollection 代表一个菜单项的集合,也是菜单树中某一菜单下的一级子菜单的菜单项的集合
        Dim subItem As MenuItem
        
For Each subItem In menuItems
            
Dim subNode As New TreeNode(subItem.Text)
            
If subItem.MenuItems.Count > 0 Then
                MenuItemToNode(subItem.MenuItems, subNode.Nodes)  
'递归处理
            End If
            targetNodes.Add(subNode)
        
Next
    
End Sub


    
Private Function FindMenuItem(ByVal selectedNode As TreeNode) As MenuItem
        
Dim indexStack As New Collections.Stack()  '定一个堆栈对象
        '将树结点从当前节点一直到根的一条路径压入堆栈
        Do Until selectedNode Is Nothing
            indexStack.Push(selectedNode.Index)
            selectedNode 
= selectedNode.Parent
        
Loop
        
'再利用菜单与treeview树一一对应的特点.根据节点的index,找到对应的菜单项.然后沿着路径找到当前的菜单项
        Dim menuItem As MenuItem = MainMenu.MenuItems(indexStack.Pop())
        
Do Until indexStack.Count = 0
            menuItem 
= menuItem.MenuItems(indexStack.Pop())
        
Loop
        
'返回当前菜单项
        Return menuItem

    
End Function


    
Private Sub btnAddItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddItem.Click
        
If txtNewText.Text = "" Then Exit Sub
        
If tvMenu.SelectedNode Is Nothing Then Exit Sub

        
Dim correspondingMenuItem As MenuItem
        
Dim newMenuItem As MenuItem
        correspondingMenuItem 
= FindMenuItem(tvMenu.SelectedNode)  '将节点转成菜单项

        newMenuItem 
= New MenuItem(txtNewText.Text)   '生成新加的菜单项
        If lstHandlers.SelectedIndex >= 0 Then
            
AddHandler newMenuItem.Click, eHandlers(lstHandlers.SelectedIndex)   '建立事件的委托
        End If
        correspondingMenuItem.MenuItems.Add(newMenuItem)  
'将新菜单加到菜单树中
        tvMenu.Nodes.Clear()   '清空treeview树
        MenuItemToNode(MainMenu.MenuItems, tvMenu.Nodes)   '将最新的菜单呈现成树
        tvMenu.ExpandAll()   '展开树


    
End Sub


    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MenuItemToNode(MainMenu.MenuItems, tvMenu.Nodes)  
'将菜单树呈现到treeview中
        tvMenu.ExpandAll()   '展开他

        
'将三个事件方法放入集合
        eHandlers(0= AddressOf ShowHelloWorld
        eHandlers(
1= AddressOf ShowMenuItemText
        eHandlers(
2= AddressOf ShowMenuItemIndex
        eHandlers(
3= AddressOf ShowCurDateTime
        
'将事件方法名字写入列表
        Dim i As Integer
        
For i = 0 To eHandlers.Length - 1
            lstHandlers.Items.Add(eHandlers(i).Method.Name)
        
Next
    
End Sub

End Class

 

运行的界面如下:

 

http://www.jmfq.cn/news/5084317.html

相关文章:

  • 应式网站/网站维护合同
  • php 企业建站cms/seo整站优化报价
  • 建立网站的流程多少钱/网站怎么快速排名
  • 梧州网站设计制作服务至上/离我最近的广告公司
  • 贵阳专业做网站的公司/海淀区seo搜索引擎优化企业
  • 国外做二手服装网站/提升seo排名平台
  • 如何开发微信微网站/河南新闻头条最新消息
  • 资料库网站应该怎么做/qq推广
  • 有限公司企业网站建设方案/今天有哪些新闻
  • 朝阳企业网站建设方案/网络推广最好的网站有哪些
  • 衢州 网站建设/免费发布推广信息的软件
  • 电子商务主要干嘛/企业网站seo多少钱
  • 无锡网站建设选众鼎/创意营销策划方案
  • 上海公安门户网站户口事项申请表/seo网络营销技术
  • wordpress页面无法选择目标/培训班线上优化
  • 商城开发网站建设/网络推广站
  • 个人注册网站怎么注册/2022年新闻摘抄十条简短
  • 网站建设制作视频/百度本地惠生活推广
  • vs2012手机网站开发教程/制作网页的软件有哪些
  • 上海网站制作公司有哪些/营销网络营销
  • 各行各业网站建设售后完善/湛江seo推广公司
  • 做网站效果/一个具体网站的seo优化
  • wordpress 导航 分类/优化设计电子课本
  • 产品定制网站开发/百度上搜索关键词如何在首页
  • 易网拓营销型网站/百度网盘app下载安装电脑版
  • 科技 杭州 网站建设/营销策划方案ppt
  • 西安做网站公司 玖佰网络/怎么样把自己的产品网上推广
  • 深圳开发网站建设哪家好/谷歌seo是什么意思
  • 高端大气上档次的网站/成人速成班有哪些专业
  • 佛山做网站制作公司/技术短期培训班