📄 form_5.vb
字号:
Imports System.Data.SqlClient
Public Class Form_5
Private _form As MyErp.S_Forms
Public Property Form() As MyErp.S_Forms
Get
Return _form
End Get
Set(ByVal value As MyErp.S_Forms)
_form = value
End Set
End Property
Sub New(ByVal form As S_Forms)
' 此调用是 Windows 窗体设计器所必需的。
InitializeComponent()
' 在 InitializeComponent() 调用之后添加任何初始化。
With Me
.Width = form.Width
.Height = form.Height
.Text = form.Text
End With
Me.Form = form
Fill_ToolItem(form)
FillColumnHeader(form)
FillListViewItem(form)
Me.ListView1.Columns(0).Width = 0
Me.ListView1.FullRowSelect = True
Me.ListView1.View = View.Details
Me.CboTarget.SelectedIndex = 0
End Sub
Sub Fill_ToolItem(ByVal form As S_Forms)
Dim dicToolStripSplitButton As New Dictionary(Of Integer, ToolStripSplitButton)
For Each toolItem As S_ToolItem In S.SToolItem.Values
If toolItem.ToolID = form.ToolID Then
Select Case toolItem.TypeID
Case 1
If toolItem.ParentID = 0 Then
Dim tsb As New MyToolStripButton()
AddHandler tsb.Click, AddressOf ToolStripButton_ButtonClick
tsb.toolitem = toolItem
tsb.Text = toolItem.Text
If toolItem.ImageIndex > -1 Then
Try
tsb.Image = imageList.Images(toolItem.ImageIndex)
Catch ex As Exception
End Try
End If
tsb.Name = toolItem.Name
tsb.TextImageRelation = TextImageRelation.ImageAboveText
Me.ToolStrip1.Items.Add(tsb)
Else
Dim tssb As ToolStripSplitButton = Nothing
dicToolStripSplitButton.TryGetValue(toolItem.ParentID, tssb)
If tssb IsNot Nothing Then
Dim toolStripMenuItem As New MyToolStripMenuItem
toolStripMenuItem.ToolItem = toolItem
toolStripMenuItem.Text = toolItem.Text
tssb.DropDownItems.Add(toolStripMenuItem)
AddHandler toolStripMenuItem.Click, AddressOf ToolStripButton_ButtonClick
End If
End If
Case 4
Dim tssb As New MyToolStripSplitButton
If toolItem.ImageIndex > -1 Then
tssb.Image = imageList.Images(toolItem.ImageIndex)
End If
tssb.TextImageRelation = TextImageRelation.ImageAboveText
tssb.Text = toolItem.Text
tssb.Name = toolItem.Name
tssb.ToolItem = toolItem
dicToolStripSplitButton.Add(toolItem.ID, tssb)
Me.ToolStrip1.Items.Add(tssb)
Case 5
If toolItem.ParentID = 0 Then
Dim tss As New ToolStripSeparator
Me.ToolStrip1.Items.Add(tss)
tss.Name = toolItem.Name
'dicToolItem.Add(toolItem.ID, tss)
Else
Dim tssb As ToolStripSplitButton = Nothing
dicToolStripSplitButton.TryGetValue(toolItem.ParentID, tssb)
If tssb IsNot Nothing Then
tssb.DropDownItems.Add(New ToolStripSeparator)
End If
End If
Case 9
Dim tssb As ToolStripSplitButton = Nothing
dicToolStripSplitButton.TryGetValue(toolItem.ParentID, tssb)
If tssb IsNot Nothing Then
Dim tsmi As New MyToolStripMenuItem
tsmi.ToolItem = toolItem
tsmi.Text = toolItem.Text
AddHandler tsmi.Click, AddressOf ToolStripButton_ButtonClick
tssb.DropDownItems.Add(tsmi)
End If
End Select
End If
Next
End Sub
Sub FillListViewItem(ByVal form As S_Forms)
For Each row In getDataSource(form).Tables(0).Rows
Dim listViewItem As ListViewItem = Me.ListView1.Items.Add(row(form.HeaderKey))
'Dim listViewItem As New ListViewItem
'ListView1.Items.Add(listViewItem)
For Each column As ColumnHeader In ListView1.Columns
If column.Name IsNot String.Empty Then
listViewItem.SubItems.Add(row(column.Name))
'If IsNumeric(row(column.Name)) Then
' column.TextAlign = HorizontalAlignment.Right
'Else
' column.TextAlign = HorizontalAlignment.Left
'End If
End If
Next
Next
End Sub
Private Sub Form_5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Sub FillColumnHeader(ByVal form As S_Forms)
For Each c As S_Component In S.SComponent.Values
If c.FormID = form.FormID Then
Me.ListView1.Columns.Add(c.ValueMember)
'CboTarget.Items.Add(c.Text)
'Dim columnHeader As New ColumnHeader
'columnHeader.Name = c.ValueMember
'columnHeader.Text = c.ValueMember
'Me.ListView1.Columns.Add(columnHeader)
For Each d As S_DisplayColumns In S.SDisplayColumns.Values
If d.ComponentID = c.ComponentID Then
Dim columnHeader As New ColumnHeader
ColumnHeader = New ColumnHeader
ColumnHeader.Text = d.Caption
columnHeader.Name = d.FieldName
ColumnHeader.Width = d.Width
ColumnHeader.TextAlign = HorizontalAlignment.Center
Me.ListView1.Columns.Add(columnHeader)
CboTarget.Items.Add(d.Caption)
End If
Next
End If
Next
End Sub
Function getDataSource(ByVal form As S_Forms) As DataSet
Dim ds As New DataSet
For Each DataSource In S.SDataSource.Values
If DataSource.FormID = form.FormID And form.HeaderName = DataSource.FcTabName Then
Dim fcSQL As String = "Select " & DataSource.SelectedSql & " From " & DataSource.FromSql
Dim da As New SqlDataAdapter(fcSQL, DbOperate.csb.ToString)
da.Fill(ds)
Return ds
End If
Next
Return ds
End Function
Private Sub ToolStripButton_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
If TypeOf sender Is MyToolStripButton Then
Dim tsb As MyToolStripButton = DirectCast(sender, MyToolStripButton)
PostEvent(tsb.ToolItem)
End If
If TypeOf sender Is MyToolStripMenuItem Then
Dim tsb As MyToolStripMenuItem = DirectCast(sender, MyToolStripMenuItem)
PostEvent(tsb.ToolItem)
End If
End Sub
Sub PostEvent(ByVal toolItem As S_ToolItem)
Select Case toolItem.EventID
Case 99
Me.Close()
Case 5
Dim form4 As New Form_4(toolItem)
form4.ShowDialog()
Case Else
MsgBox("没有为 EventID = " & toolItem.EventID.ToString & "设定动作!")
End Select
End Sub
Private Sub txtTarger_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTarger.TextChanged
If CboTarget.SelectedIndex = -1 Then
RemoveHandler txtTarger.TextChanged, AddressOf txtTarger_TextChanged
txtTarger.Text = String.Empty
AddHandler txtTarger.TextChanged, AddressOf txtTarger_TextChanged
MsgBox("请选择要查找的字段!")
CboTarget.Focus()
Return
Else
If txtTarger.Text = String.Empty Then
Me.ListView1.Items.Clear()
FillListViewItem(Form)
ListView1.Refresh()
End If
For Each lvi As ListViewItem In Me.ListView1.Items
If Not lvi.SubItems.Item(CboTarget.SelectedIndex + 1).Text().Contains(txtTarger.Text) Then
lvi.Remove()
ListView1.Refresh()
End If
Next
End If
End Sub
Private Sub CboTarget_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboTarget.SelectedIndexChanged
Me.ListView1.Items.Clear()
FillListViewItem(Form)
If txtTarger.Text <> String.Empty Then
For Each lvi As ListViewItem In Me.ListView1.Items
If Not lvi.SubItems.Item(CboTarget.SelectedIndex + 1).Text().Contains(txtTarger.Text) Then
lvi.Remove()
ListView1.Refresh()
End If
Next
End If
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -