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 NothingDim 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 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 String, ByVal name As String)
MyBase.New(code, name)
End Sub
End Class
效果:
第三个示例,自联表数据情形。这里以树和自联表(四) 上的数据为例。
要使用本示例代码,需把以上数据存为一个Excel文件,文件名为Menus.xls,数据簿工作表名称为Menus。存它到程序运行目录上。
首先把数据读进一个DataTable里面。
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类型,保存。
现在可以使用这些数据了:
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
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
结果:
用这种方法,处理以上三种通常用到的数据,还是比较方便的。