欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

ume und Selbstverbindung(六)

墨初 知识笔记 130阅读

作者:瓦塞尔第三次参加世界杯时,情况如何呢?获取关于ToolStripMenuItemEs selbst是一个鲍姆。如何沉浸在其中形式欣祖根冯梅努斯。我的图片:这是:代码:publicclassformtreeprivatesubutton 1 _ Click(ByValsenderAsSystem).对象,ByValeAsSystem .EventArgs)句柄按钮1 .单击dimmcollectionasnewlzmtw .美国系统. u收藏。因为链接自linkitemcollection(of integer,MenuItemInformation)m集合appendFromBlankCodeNode(GetMenuNode(Me),1)'))Me .树形视图1。Nodes.Clear()Me .树形视图1。节点。添加(m集合.节点。ConvertToTreeNode('Text 'True))Me .datagridview 1。数据来源=m集合.节点。converttodatable(True)EndSubPrivateFunctionGetMenuNode(ByValformAsForm)aslzmtw。美国系统。u收藏。如果是表单,则为(菜单项信息的)节点.MainMenuStrip

)">Is Nothing Then Return Nothing
        
Dim mNode As New LzmTW.uSystem.uCollection.Node(Of MenuItemInformation)(New MenuItemInformation)
        mNode.Item.Name 
= "Root"

        
For Each item As ToolStripMenuItem In form.MainMenuStrip.Items
            AppendNode(mNode, item)
        
Next

        
Return mNode
    
End Function

    
Private Sub AppendNode(ByVal node As LzmTW.uSystem.uCollection.Node(Of MenuItemInformation), ByVal menuItem As ToolStripMenuItem)
        
Dim mCurrentNode As LzmTW.uSystem.uCollection.Node(Of MenuItemInformation) = Nothing
        mCurrentNode 
= node.Nodes.Add(New MenuItemInformation(menuItem))

        
For Each item As ToolStripMenuItem In menuItem.DropDownItems
            AppendNode(mCurrentNode, item)
        
Next

    
End Sub
End Class

Public Class MenuItemInformation
    
Inherits LzmTW.uSystem.uCollection.SinceLink.SinceLinkItemBase(Of Integer)

    
Private gText As String
    
Public Property Text() As String
        
Get
            
Return gText
        
End Get
        
Set(ByVal value As String)
            gText 
= value
        
End Set
    
End Property

    
Sub New()
    
End Sub

    
Sub New(ByVal menuItem As ToolStripMenuItem)
        
With menuItem
            
Me.Name = .Name
            
Me.Text = .Text
        
End With
    
End Sub

End Class

 

第二个示例,(Code,Name)情形。仍以行政区划数据为例。

代码:

Public Class Form1


    
Public gRegionalDatas As DataTable '这是列为Code,Name的行政区划数据表

    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        
Dim mCollection As New LzmTW.uSystem.uCollection.SinceLink.SinceLinkItemCollection(Of String, RegionalCodeItem)("00,00,00")

        
For Each row As DataRow In gRegionalDatas.Rows
            
With row
                mCollection.Add(.Item(
"Code").ToString, .Item("Name").ToString)
            
End With
        
Next

        
Me.TreeView1.Nodes.Clear()
        
Me.TreeView1.Nodes.Add(mCollection.Node.ConvertToTreeNode("Name"True))

        
Me.DataGridView1.DataSource = mCollection.Node.ConvertToDataTable(True)
    
End Sub

End Class

Public Class RegionalCodeItem
    
Inherits LzmTW.uSystem.uCollection.SinceLink.SinceLinkItemBase(Of String)

    
Sub New()
    
End Sub

    
Sub New(ByVal code As StringByVal name As String)
        
MyBase.New(code, name)
    
End Sub

End Class

效果:

第三个示例,自联表数据情形。这里以树和自联表(四) 上的数据为例。

要使用本示例代码,需把以上数据存为一个Excel文件,文件名为Menus.xls,数据簿工作表名称为Menus。存它到程序运行目录上。

首先把数据读进一个DataTable里面。

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        
Dim cn As New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=menus.xls;HDR=Yes;")
        
Dim cm As New Odbc.OdbcCommand("SELECT * FROM [Menus$]", cn)
        
Dim ad As New Odbc.OdbcDataAdapter(cm)
        
Dim mds As New DataSet("Menus")
        ad.Fill(mds, 
"Menu")
        mds.WriteXmlSchema(
"Menus.xsd")
        mds.WriteXml(
"menus.xml")
        
Me.DataGridView1.DataSource = mds.Tables(0)
    
End Sub

由于我没有预建一个DataTable,所以上面代码运行后它自动的将Integer类型作为Double类型来处理。因此,需把它转为Intege类型。在此,我将数据存为xml形式,同时输出Schema文件。

之后,打开Menus.xsd文件,将所有Double类型改为Integer类型,保存。

现在可以使用这些数据了:

 

<Serializable()> _
Public Class MenuItem
    
Inherits LzmTW.uSystem.uCollection.SinceLink.SinceLinkItemBase(Of Integer)

    
Private gText As String
    
Private gDeclare As String
    
Private gToolTipText As String
    
Private gShortcut As Integer
    
Private gClickAction As String
    
Private gVisible As Boolean
    
Private gEnabled As Boolean

    
Public Property Text() As String
        
Get
            
Return gText
        
End Get
        
Set(ByVal value As String)
            gText 
= value
        
End Set
    
End Property

    
Public Property [Declare]() As String
        
Get
            
Return gDeclare
        
End Get
        
Set(ByVal value As String)
            gDeclare 
= value
        
End Set
    
End Property

    
Public Property ToolTipText() As String
        
Get
            
Return gToolTipText
        
End Get
        
Set(ByVal value As String)
            gToolTipText 
= value
        
End Set
    
End Property

    
Public Property Shortcut() As Integer
        
Get
            
Return gShortcut
        
End Get
        
Set(ByVal value As Integer)
            gShortcut 
= value
        
End Set
    
End Property

    
Public Property ClickAction() As String
        
Get
            
Return gClickAction
        
End Get
        
Set(ByVal value As String)
            gClickAction 
= value
        
End Set
    
End Property

    
Public Property Visible() As Boolean
        
Get
            
Return gVisible
        
End Get
        
Set(ByVal value As Boolean)
            gVisible 
= value
        
End Set
    
End Property

    
Public Property Enabled() As Boolean
        
Get
            
Return gEnabled
        
End Get
        
Set(ByVal value As Boolean)
            gEnabled 
= value
        
End Set
    
End Property
End Class

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
Dim ds As New DataSet
        ds.ReadXmlSchema(
"Menus.xsd")
        ds.ReadXml(
"Menus.xml")

        
Dim mCollection As New LzmTW.uSystem.uCollection.SinceLink.SinceLinkItemCollection(Of Integer, MenuItem)


        
' mCollection.Read()

        mCollection.AppendFromSinceLinkTable(ds.Tables(
0))

        
' mCollection.Save()

        
Me.DataGridView1.DataSource = mCollection.Node.ConvertToDataTable(True)
        
Me.TreeView1.Nodes.Clear()
        
Me.TreeView1.Nodes.Add(mCollection.Node.ConvertToTreeNode("Declare"True))

        
'Console.WriteLine(mCollection.Node.FindFirstNode("Code", "300").Item.Text)
        'Console.WriteLine(mCollection.Find("Code", "300").Text)
    End Sub

结果:

用这种方法,处理以上三种通常用到的数据,还是比较方便的。

标签:
声明:无特别说明,转载请标明本文来源!