ComboBoxTree.vb
上传用户:hbmarket
上传日期:2022-08-01
资源大小:45k
文件大小:11k
源码类别:

组合框控件

开发平台:

Visual Basic

  1. Imports System.ComponentModel
  2. Imports System.Windows.Forms
  3. Imports System.Drawing
  4. Namespace Controls
  5.     < _
  6.     ToolboxBitmap(GetType(System.Windows.Forms.ComboBox)), _
  7.     DefaultEvent("AfterSelect") _
  8.     > Public Class ComboBoxTree
  9.         Inherits System.Windows.Forms.UserControl
  10. #Region " Windows Form Designer generated code "
  11.         Public Sub New()
  12.             MyBase.New()
  13.             'This call is required by the Windows Form Designer.
  14.             InitializeComponent()
  15.             'Add any initialization after the InitializeComponent() call
  16.         End Sub
  17.         'UserControl overrides dispose to clean up the component list.
  18.         Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  19.             If disposing Then
  20.                 If Not (components Is Nothing) Then
  21.                     components.Dispose()
  22.                 End If
  23.             End If
  24.             MyBase.Dispose(disposing)
  25.         End Sub
  26.         'Required by the Windows Form Designer
  27.         Private components As System.ComponentModel.IContainer
  28.         'NOTE: The following procedure is required by the Windows Form Designer
  29.         'It can be modified using the Windows Form Designer.  
  30.         'Do not modify it using the code editor.
  31.         Friend WithEvents ComboBox As ComboBoxTree_ComboBox
  32.         <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  33.             Me.ComboBox = New ComboBoxTree_ComboBox
  34.             Me.SuspendLayout()
  35.             '
  36.             'ComboBox
  37.             '
  38.             Me.ComboBox.Dock = System.Windows.Forms.DockStyle.Top
  39.             Me.ComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
  40.             Me.ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
  41.             Me.ComboBox.ItemHeight = 16
  42.             Me.ComboBox.Location = New System.Drawing.Point(0, 0)
  43.             Me.ComboBox.Name = "ComboBox"
  44.             Me.ComboBox.SelectedItem = Nothing
  45.             Me.ComboBox.Size = New System.Drawing.Size(384, 22)
  46.             Me.ComboBox.TabIndex = 0
  47.             '
  48.             'ComboBoxTree
  49.             '
  50.             Me.BackColor = System.Drawing.SystemColors.Window
  51.             Me.Controls.Add(Me.ComboBox)
  52.             Me.Name = "ComboBoxTree"
  53.             Me.Size = New System.Drawing.Size(384, 72)
  54.             Me.ResumeLayout(False)
  55.         End Sub
  56. #End Region
  57.         Public Event DropDown(ByVal sender As Object)
  58.         Public Event CloseUp(ByVal sender As Object)
  59.         Public Event BeforeSelect(ByVal sender As Object, ByVal Node As TreeNode, ByRef Cancel As Boolean)
  60.         Public Event AfterSelect(ByVal sender As Object)
  61.         Private p_DropDownWidth As Integer = -1
  62. #Region " Standard Public Properties "
  63.         Public Shadows Property Size() As Drawing.Size
  64.             Get
  65.                 Return MyBase.Size
  66.             End Get
  67.             Set(ByVal Value As Drawing.Size)
  68.                 MyBase.Size = New Size(Value.Width, Me.ComboBox.Height)
  69.                 If p_DropDownWidth <= 0 Then Me.ComboBox.TreeView.Width = Value.Width
  70.             End Set
  71.         End Property
  72.         Public Shadows Property Height() As Integer
  73.             Get
  74.                 Return MyBase.Height
  75.             End Get
  76.             Set(ByVal Value As Integer)
  77.                 Me.ComboBox.Height = Value
  78.                 MyBase.Height = Me.ComboBox.Height
  79.             End Set
  80.         End Property
  81.         Public Shadows Property Width() As Integer
  82.             Get
  83.                 Return MyBase.Width
  84.             End Get
  85.             Set(ByVal Value As Integer)
  86.                 MyBase.Width = Value
  87.                 If p_DropDownWidth <= 0 Then Me.ComboBox.TreeView.Width = Value
  88.             End Set
  89.         End Property
  90.         < _
  91.         DefaultValue(GetType(Color), "Window") _
  92.         > Public Shadows Property BackColor() As System.Drawing.Color
  93.             Get
  94.                 Return MyBase.BackColor
  95.             End Get
  96.             Set(ByVal Value As System.Drawing.Color)
  97.                 MyBase.BackColor = Value
  98.                 Me.ComboBox.BackColor = Value
  99.             End Set
  100.         End Property
  101.         Public Shadows Property ForeColor() As System.Drawing.Color
  102.             Get
  103.                 Return MyBase.ForeColor
  104.             End Get
  105.             Set(ByVal Value As System.Drawing.Color)
  106.                 MyBase.ForeColor = Value
  107.                 Me.ComboBox.ForeColor = Value
  108.             End Set
  109.         End Property
  110.         < _
  111.         Browsable(False) _
  112.         > Public Shadows Property BackgroundImage() As System.Drawing.Image
  113.             Get
  114.                 Return MyBase.BackgroundImage
  115.             End Get
  116.             Set(ByVal Value As System.Drawing.Image)
  117.                 MyBase.BackgroundImage = Value
  118.                 Me.ComboBox.TreeView.BackgroundImage = Value
  119.             End Set
  120.         End Property
  121.         Public Shadows Property Font() As System.Drawing.Font
  122.             Get
  123.                 Return MyBase.Font
  124.             End Get
  125.             Set(ByVal Value As System.Drawing.Font)
  126.                 MyBase.Font = Value
  127.                 Me.ComboBox.Font = Value
  128.             End Set
  129.         End Property
  130.         Public Shadows Property Enabled() As Boolean
  131.             Get
  132.                 Return MyBase.Enabled
  133.             End Get
  134.             Set(ByVal Value As Boolean)
  135.                 MyBase.Enabled = Value
  136.                 Me.ComboBox.Enabled = Value
  137.             End Set
  138.         End Property
  139.         Public Shadows Property ContextMenu() As System.Windows.Forms.ContextMenu
  140.             Get
  141.                 Return MyBase.ContextMenu
  142.             End Get
  143.             Set(ByVal Value As System.Windows.Forms.ContextMenu)
  144.                 MyBase.ContextMenu = Value
  145.                 Me.ComboBox.ContextMenu = Value
  146.             End Set
  147.         End Property
  148. #End Region
  149. #Region " Particular Public Properties "
  150.         < _
  151.         Browsable(False) _
  152.         > Public Property SelectedNode() As TreeNode
  153.             Get
  154.                 Return Me.ComboBox.SelectedItem
  155.             End Get
  156.             Set(ByVal Value As TreeNode)
  157.                 Me.ComboBox.SelectedItem = Value
  158.             End Set
  159.         End Property
  160.         < _
  161.         Category("Behavior"), _
  162.         DefaultValue(16) _
  163.         > Public Property ItemHeight() As Integer
  164.             Get
  165.                 Return Me.ComboBox.ItemHeight
  166.             End Get
  167.             Set(ByVal Value As Integer)
  168.                 If Value <= 0 Then Value = 16
  169.                 Me.ComboBox.ItemHeight = Value
  170.                 Me.Height = Me.ComboBox.Height
  171.                 Me.Invalidate()
  172.             End Set
  173.         End Property
  174.         < _
  175.         Category("Behavior"), _
  176.         DefaultValue(0) _
  177.         > Public Property ImageIndex() As Integer
  178.             Get
  179.                 Return Me.ComboBox.TreeView.ImageIndex
  180.             End Get
  181.             Set(ByVal Value As Integer)
  182.                 Me.ComboBox.TreeView.ImageIndex = Value
  183.             End Set
  184.         End Property
  185.         < _
  186.         Category("Behavior"), _
  187.         DefaultValue(1) _
  188.         > Public Property SelectedImageIndex() As Integer
  189.             Get
  190.                 Return Me.ComboBox.TreeView.SelectedImageIndex
  191.             End Get
  192.             Set(ByVal Value As Integer)
  193.                 Me.ComboBox.TreeView.SelectedImageIndex = Value
  194.             End Set
  195.         End Property
  196.         < _
  197.         Category("Behavior") _
  198.         > Public Property ImageList() As ImageList
  199.             Get
  200.                 Return Me.ComboBox.TreeView.ImageList
  201.             End Get
  202.             Set(ByVal Value As ImageList)
  203.                 Me.ComboBox.TreeView.ImageList = Value
  204.             End Set
  205.         End Property
  206.         < _
  207.         Category("Behavior"), _
  208.         DefaultValue(-1) _
  209.         > Public Property DropDownWidth() As Integer
  210.             Get
  211.                 Return p_DropDownWidth
  212.             End Get
  213.             Set(ByVal Value As Integer)
  214.                 If Value <= 0 Then
  215.                     p_DropDownWidth = -1
  216.                     Me.ComboBox.TreeView.Width = Me.Width
  217.                 Else
  218.                     p_DropDownWidth = Value
  219.                     Me.ComboBox.TreeView.Width = p_DropDownWidth
  220.                 End If
  221.             End Set
  222.         End Property
  223.         < _
  224.         Category("Behavior"), _
  225.         DefaultValue(194) _
  226.         > Public Property DropDownHeight() As Integer
  227.             Get
  228.                 Return Me.ComboBox.TreeView.Height
  229.             End Get
  230.             Set(ByVal Value As Integer)
  231.                 If Value > 0 Then
  232.                     Me.ComboBox.TreeView.Height = Value
  233.                 Else
  234.                     Me.ComboBox.TreeView.Height = 194
  235.                 End If
  236.             End Set
  237.         End Property
  238.         <Browsable(False), _
  239.         DefaultValue(False) _
  240.         > Public Property DroppedDown() As Boolean
  241.             Get
  242.                 Return Me.ComboBox.DroppedDown
  243.             End Get
  244.             Set(ByVal Value As Boolean)
  245.                 Me.ComboBox.DroppedDown = Value
  246.             End Set
  247.         End Property
  248. #End Region
  249. #Region " Public Methods "
  250.         Public Function TreeView() As TreeView
  251.             Return Me.ComboBox.TreeView
  252.         End Function
  253. #End Region
  254. #Region " Private Methods "
  255.         Private Sub UserControl_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
  256.             Me.Height = Me.ComboBox.Height
  257.             Me.ComboBox.TreeView.Left = Me.Left
  258.             Me.ComboBox.TreeView.Top = Me.Top + Me.Height
  259.             If p_DropDownWidth <= 0 Then Me.ComboBox.TreeView.Width = Me.Width
  260.         End Sub
  261.         Private Sub ComboBox_DropDown() Handles ComboBox.DropDown
  262.             RaiseEvent DropDown(Me)
  263.         End Sub
  264.         Protected Overrides Sub OnParentChanged(ByVal e As System.EventArgs)
  265.             Me.ComboBox.TreeView.Parent = Me.Parent
  266.         End Sub
  267.         Private Sub ComboBox_AfterSelect() Handles ComboBox.AfterSelect
  268.             RaiseEvent AfterSelect(Me)
  269.         End Sub
  270.         Private Sub ComboBox_BeforeSelect(ByVal Node As System.Windows.Forms.TreeNode, ByRef Cancel As Boolean) Handles ComboBox.BeforeSelect
  271.             RaiseEvent BeforeSelect(Me, Node, Cancel)
  272.         End Sub
  273.         Private Sub ComboBox_CloseUp() Handles ComboBox.CloseUp
  274.             RaiseEvent CloseUp(Me)
  275.         End Sub
  276.         Protected Overrides Sub OnCreateControl()
  277.             MyBase.BackColor = System.Drawing.SystemColors.Window
  278.             Me.ComboBox.BackColor = MyBase.BackColor
  279.         End Sub
  280. #End Region
  281.         Public Class SelectEventArgs
  282.             Public Node As TreeNode
  283.             Public Cancel As Boolean
  284.             Public Sub New(ByVal Node As TreeNode)
  285.                 Me.Node = Node
  286.                 Me.Cancel = False
  287.             End Sub
  288.         End Class
  289.         Private Sub ComboBoxTree_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
  290.         End Sub
  291.         Private Sub ComboBoxTree_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
  292.         End Sub
  293.     End Class
  294. End Namespace