如何创建一个简单的(用户控制)DLL
首先 CodeProject适用于所有级别的程序员。本文仅针对初学者和从未构建过DLL的VB程序员。关于更复杂的组合框,请参阅我的第一篇文章:ExCB - Extended Multi Column组合框 介绍 可下载的文件包含完整的项目,但我将展示创建这个控件的基本步骤,一个可以永久显示一列或多列的组合框(比如“field boxes”,不管有没有标签)和一个用于“record”选择的列表。 DLL通常是一个控件,由其他System.Windows组成。由用户为特定目的创建的表单控件,通常是灵活的、可参数化的,并可随时执行多个任务。 与其他控件一样,UserControl也有自己的属性、方法和事件,其中一些是我们创建的。 在开发DLL时,最好使用另一个简单的WinForms项目来测试控件,这两个项目都在解决方案中,这样我们就可以深入测试和调试控件的行为。 构建用户控件 打开Visual Studio,开始一个新项目,选择类库和给它的名字MCCB,将项目名称的程序集名称和根名称空间,但和给你一个VB公共类class1菜单项目,选择添加用户控制和给它的名字MCCB,这将是未来你的控制- VS创建另一个类的名称和显示了模板- 150 x150广场,更像是一个面板比像一种形式… 在本例中,目标是创建一个使用标签永久公开一列或多列的组合框。我们创建第一列,所有其他列将在运行时创建。我们还需要一个下拉列表和一个打开列表的按钮。 将控件的大小调整为appx。200x200,并改变其背景色为任何其他(轻微)。在运行时,这个颜色将被改变为颜色。控件,但在设计时,在调整控件大小时,我们需要一个可视化引用。让我们从标签(标题/标题)开始:从工具箱中选择一个标签。更改以下属性:Name="Hdr0", AutoSize=False, BackColor=WhiteSmoke, BorderStyle=FixedSingle, Location=0;0, Size=100;19, Text="Hdr0", TextAlign= middleleft现在框显示字段值。代替文本框,我们将使用标签…是一个较轻的控件,而且不写入或更改值。选择另一个标签并改变以下属性:Name="Box0", AutoSize=False, BackColor=White, BorderStyle=FixedSingle, ForeColor=Navy, Location=0;18, Size=100;20, Text="Box0", TextAlign= middleleft接下来,列表。选择一个列表视图并改变属性:Name="MyLV", View=Details, BorderStyle=FixedSingle, FullRowSelect=True, GridLines=True, HeaderStyle=None, Location=0;37, MultiSelect=False, Size=119;138。它的列表有8行,没有头…我们还将创建第一列:添加一列并更改属性:Name="lvCol0", Text="", Width=97。为什么是97年?为了完美地对齐,ListView列的宽度必须是对应标签/框的宽度减1,除了第一列,它必须是减3…最后是按钮,它必须显示任何类型的“向下箭头”。它可以是一个按钮、一个图片框,甚至是一个简单的标签。我们用标签来做。选择一个标签并改变属性:Name="LblDrop", AutoSize=False, BackColor=WhiteSmoke, BorderStyle=FixedSingle, Location=99;18, Size=20;20, Text=""。在属性图像-本地资源-导入:DArrow。png,位于文件夹。\图像 一切都很好,对齐了,对吧?但是,当控件要放在表单上时,列表必须隐藏……因此,为了防止在设计时垂直调整大小,因为头部+框的实际高度是38,添加这第一个代码,在UserControl的调整大小事件: 隐藏,复制Code
Private Sub MCCB_Resize(sender As Object, e As EventArgs) Handles Me.Resize Me.Height = 38 End Sub
现在是创建测试和调试控件的项目的时候了。保存项目并启动Windows Forms应用程序类型的新项目,将其命名为MCCB_Test - VS将提供一个表单模板(Form1)。保存第二个项目。添加UserControl项目:菜单文件-添加现有项目-浏览MCCB项目并打开MCCB。vbproj—创建一个解决方案‘MCCB_Test’,这两个项目都在解决方案资源管理器中。选择MCCB项目,菜单BUILD - BUILD MCCB。打开工具箱,看看顶部…控制MCCB已经在那里了。双击它—该控件被放置在表单中,名称为Mccb1。调整大小——如你所见,只允许水平调整大小。开始解决方案——很好,控制就在那里!!现在您可以管理这两个项目。插入一段代码,菜单构建—重新构建MCCB,如果需要检查或更改Form1中的控制属性,如果需要,为调试porposes定义断点,然后开始解决方案。一件容易的事。 我们要创建一组属性。通常,属性必须是公共的,并指定其数据类型。可以查看和更改自定义属性值,就像IDE Properties窗口中的任何其他属性一样,也可以在运行时查看和更改。所有的性质,除了一个,都可能是b在IDE属性窗口中读取和修改。它们中的一些会改变控件的外观:标题和框的高度,边框样式,标题的前景色和背景色,框和列表。这些属性意味着要重新绘制控件,稍后我们将看到。它们有自己定义的数据类型——整数、字节、颜色、BorderStyle——这些可以通过预定义的对话框、组合框或文本框来更改。但是,尽管属性ListFontStyle和LayerOrder处理字节值,而不是简单的输入数字的文本框,但我们更喜欢使用具有描述性文本的组合框来表示允许的值。为此,我们必须声明枚举列表的数据类型。最后,属性SelectedIndex只能在运行时使用。,必须是不可浏览和隐藏的。点击这里查看所有属性 选择并打开MCCB.vb Code选项卡。允许进口的引用,需要指定一些属性的属性,如类别,描述,可浏览或DesignerSerializationVisibility,并宣布两个Enum类型和两个变量——一些属性值(变量的_Name属性的名称,之前一个下划线),一些供内部使用: 隐藏,复制Code
Imports System.ComponentModel ' For PropertyAttributes
公开课MCCB 隐藏,复制Code
Public Enum LFStyle ' for Property ListFontStyle SameAsControl = 0 AlwaysRegular = 1 End Enum
隐藏,复制Code
Public Enum LayOrder ' for Property LayerOrder Normal = 0 BringToFront = 1 SendToBack = 2 End Enum
隐藏,收缩,复制Code
' Property variables Private _MaxItemsDisp As Integer = 8 Private _HeaderHeight As Byte = 19 Private _HeaderBackColor As Color = Color.WhiteSmoke Private _HeaderForeColor As Color = Color.Black Private _HeaderBorderStyle As BorderStyle = Windows.Forms.BorderStyle.FixedSingle Private _BoxHeight As Byte = 20 Private _BoxBackColor As Color = Color.White Private _BoxForeColor As Color = Color.MediumBlue Private _BoxBorderStyle As BorderStyle = Windows.Forms.BorderStyle.FixedSingle Private _ListBackColor As Color = Color.White Private _ListForeColor As Color = Color.Black Private _ListBorderStyle As BorderStyle = Windows.Forms.BorderStyle.FixedSingle Private _ListFontStyle As Byte = 0 ' 0-SameAsControl, 1-AlwaysRegular Private _LayerOrder As Byte = 0 ' 0-Normal, 1-BringToFront, 2-SendToBack Private _SelectedIndex As Integer = -1 ' Internal variables Private _ColumnCount As Integer = 0 Private _ColumnIndex As Integer = 0 Private _TotalWidth As Integer = 99 Private _LeftLocation As Integer = 0 Private _ItemsCount As Integer = 0 Private _Me_MinHeight As Integer = _HeaderHeight + _BoxHeight - 1 Private _ListHeight As Integer = 0 Private _ShowList As Boolean = False ' used in Resize event Private _FNIlastIdx As Integer = -1 ' Last ColumnIndex searched Private _FNIlastStr As String = "" ' Last String searched Private _FNI_iFrom As Integer = -1 Private _Error As String = "Error"
如前所述,大多数属性都意味着要重新绘制控件。而重绘控件则意味着要引发的“调整大小”事件。每当列表被下拉或隐藏时,也将调用Resize事件。,当“按钮”LblDrop被单击时。因此,Resize事件必须处理两种不同的情况:1)列表将被下拉(如果有项目要显示),具有正确的高度;2)列表将被隐藏。为了控制它的行为,我们创建了一个变量_ShowList,它的初始值为False,从而确保在设计模式中正确缩放。让我们改变UserControl的Resize事件。注意,_Me_MinHeight = _HeaderHeight + _BoxHeight - 1,所以_Me_MinHeight总是表示控件的(最小)高度,不包含列表,列表的高度是要显示的行数,每个行17像素[16(行高)+ 1(分隔行)]+ 1(最后一行): 隐藏,复制Code
Private Sub MCCB_Resize(sender As Object, e As EventArgs) Handles Me.Resize 'Me.Height = 38 ' Replaced by the code below: If _ShowList And _ItemsCount > 0 Then _ListHeight = Math.Min(_ItemsCount, _MaxItemsDisp) * 17 + 1 Else _ListHeight = 0 End If Me.Height = _Me_MinHeight + _ListHeight MyLV.Height = _ListHeight End Sub
Resize事件也将从其他一些情况调用,但是变量_ShowList必须设置为所需的值。那么,让我们创建一个唯一的子程序来设置变量的值并调用Resize事件,它将在以下每种情况下被调用: 隐藏,复制Code
Private Sub ShowHideList(Show As Boolean) _ShowList = Show MCCB_Resize(Nothing, Nothing) End Sub
现在,当标签LblDrop被单击时,让我们提供一种机制来下拉或隐藏列表。而且,当鼠标经过标签时,它的背景色变成橙色,光标变为手型。那么,让我们使用鼠标悬停,鼠标离开,然后点击: 隐藏,复制Code
Private Sub LblDrop_MouseHover(sender As Object, e As EventArgs) Handles LblDrop.MouseHover Me.Cursor = Cursors.Hand sender.BackColor = Color.Orange End Sub
隐藏,复制Code
Private Sub LblDrop_MouseLeave(sender As Object, e As EventArgs) Handles LblDrop.MouseLeave Me.Cursor = Cursors.Default sender.BackColor = Color.WhiteSmoke End Sub
隐藏,复制Code
Private Sub LblDrop_Click(sender As Object, e As EventArgs) Handles LblDrop.Click ShowHideList(Show:=(Me.Height <= _Me_MinHeight)) End Sub
现在创建第一个属性。默认情况下,属性是可读的(Get部分)和可写的(Set路径)。但是,也可以将它们声明为只读(仅获取部分)或只读(仅设置部分)。此外,还可以指定一些属性。在本例中,包括类别(现有的或新的,属性将被包括在其中)和描述(出现在属性窗口底部的解释)。若要读取属性,请返回相关变量的值。要编写属性,请将它的关联变量设置为指定的值,如果该值要立即生效,请编写操作代码。在本例中,只需调用子ShowHideList,参数为True,以设置变量_ShowList并下拉列表: 隐藏,复制Code
<Category("_MCCB specifics")> _ <Description("Maximum Items Displyed by the List")> _ Public Property MaxItemsDisp() As Byte Get ' Get - if the Property is readable (or ReadOnly) Return _MaxItemsDisp End Get Set(ByVal value As Byte) ' Set - if the Property is writable (or WriteOnly) _MaxItemsDisp = value ShowHideList(True) ' Action End Set End Property
现在,让我们创建第一个方法,它将允许添加列和设置一些(固定)属性。要从外部访问,该方法必须是公共的。对该方法的第一次调用不会创建新列,而是更改已经存在的列。该方法将接受三个参数: 宽度——要求。列的宽度,以像素为单位。值为0将创建一个隐藏列。文本——要求。列的标题(标题)。对齐,可选的。列的水平对齐。保留默认值(如果未指定)。HorizontalAlignment值(0=左,1=右,2=中心)被用来定义列表视图列的TextAlign属性(或者,例如,文本框)。但是,标签使用了其他值(内容对齐),除了水平位置之外,还反映了垂直位置(顶部、中间、底部)。我们的' header '和'Boxes'是'middle'对齐的,所以HorizontalAlignment值(0,1和2)必须转换为'middle' ContentAlignment值(分别为16,64和32)。 隐藏,收缩,复制Code
Public Sub AddColumn(Width As Integer, Text As String, _ Optional Align As HorizontalAlignment = 0) Dim Lbl_Align As ContentAlignment = If(Align = 1, 64, _ If(Align = 2, 32, 16)) Dim Hdr As Label Dim Box As Label Me.SuspendLayout() _ColumnCount += 1 _ColumnIndex = _ColumnCount - 1 If _ColumnCount = 1 Then ' First Column, already exists Hdr = Hdr0 ' Existing Header Box = Box0 ' Existing Box MyLV.Width = Width + 19 ' Existing List. Initial ' value, including the "Button" (LblDrop) lvCol0.Width = Width - 3 ' Existing ListView Column _TotalWidth = Width - 1 ' Initial value Me.BackColor = Color.Transparent Else ' Column is to be created Hdr = New Label ' New Header Hdr.Name = "Hdr" & _ColumnIndex.ToString Hdr.Left = _TotalWidth Box = New Label ' New Box Box.Name = "Box" & _ColumnIndex.ToString Box.Left = _TotalWidth MyLV.Columns.Add(New ColumnHeader) ' New ListView Column MyLV.Columns(_ColumnIndex).Name = "lvCol" & _ColumnIndex.ToString MyLV.Columns(_ColumnIndex).Text = "" MyLV.Columns(_ColumnIndex).Width = Math.Max(Width - 1, 0) MyLV.Columns(_ColumnIndex).TextAlign = Align MyLV.Width += Width - 1 ' Accum. _TotalWidth += Width - 1 ' Accum. End If Hdr.Width = Width ' Header Hdr.Text = Text Hdr.TextAlign = Lbl_Align Box.Width = Width ' Box Box.Text = "" Box.TextAlign = Lbl_Align LblDrop.Left = _TotalWidth ' DropDown "Button" LblDrop.Height = _BoxHeight If _ColumnCount > 1 Then ' All but first Controls.AddRange({Box, Hdr}) End If Me.ResumeLayout(True) RedrawControls() End Sub
如何调用这个方法的例子: 隐藏,复制Code
Mccb1.AddColumn(140, "Name") ' Align not specified = HorizontalAlignment.Left Mccb1.AddColumn(35, "Age", HorizontalAlignment.Center) Mccb1.AddColumn(90, "Due date", 2) ' 2 = HorizontalAlignment.Center Mccb1.AddColumn(90, "Amount (US$)", HorizontalAlignment.Right)
如前所述,AddColumn方法创建新列,并设置其不可更改的属性。但是要完全完成在组件设置时,我们必须初始化可以随时更改的属性。因此,我们将创建一个特定的(私有的)子例程(RedrawControls),它也被AddColumn方法(最后一条指令)调用:注意,因为控件的大小改变了(Me)。高度,. Me.Width),控件的调整大小事件将被触发: 隐藏,收缩,复制Code
Private Sub RedrawControls() Me.SuspendLayout() MyLV.Top = _HeaderHeight + _BoxHeight - 2 MyLV.BackColor = _ListBackColor MyLV.ForeColor = _ListForeColor MyLV.BorderStyle = _ListBorderStyle Dim Name As String For iCtr As Integer = 0 To _ColumnIndex ' For each Column... Name = "Box" & iCtr.ToString Controls(Name).Top = _HeaderHeight - 1 Controls(Name).Height = _BoxHeight Controls(Name).BackColor = _BoxBackColor Controls(Name).ForeColor = _BoxForeColor Dim Lbl As Label = CType(Controls(Name), Label) Lbl.BorderStyle = _BoxBorderStyle Name = "Hdr" & iCtr.ToString Controls(Name).Height = _HeaderHeight Controls(Name).BackColor = _HeaderBackColor Controls(Name).ForeColor = _HeaderForeColor Lbl = CType(Controls(Name), Label) Lbl.BorderStyle = _HeaderBorderStyle Next LblDrop.Top = _HeaderHeight - 1 LblDrop.Height = _BoxHeight _Me_MinHeight = _HeaderHeight + _BoxHeight - 1 Me.Height = _Me_MinHeight Me.Width = _TotalWidth + 20 ' 20=LblDrop.Width Me.ResumeLayout(True) End Sub
查看所提供的源项目。代码或复制调用RedrawControls的所有其他属性。特别注意两个操作不同的属性:第一个是ListFontStyle,它的类型是由Enum LFStyle定义的,它设置变量_ListFontStyle并调用每当字体改变时发生的事件(FontChanged)。第二个是LayerOrder,它的类型是由枚举LayOrder定义的,它设置变量_LayerOrder,但是它的操作是在之前执行的,这取决于它之前的值。为什么?因为,如果a和b没有任何疑问,那么将值设置为0 (Normal)就意味着要更改最后的行为。该操作也必须在控件加载时在控件的加载事件中执行。让我们看看Load和FontChanged事件,以及两个属性: 隐藏,复制Code
Private Sub MCCB_Load(sender As Object, e As EventArgs) Handles MyBase.Load If _LayerOrder = 1 Then Me.BringToFront() ElseIf _LayerOrder = 2 Then Me.SendToBack() End If End Sub
隐藏,复制Code
Private Sub MCCB_FontChanged(sender As Object, e As EventArgs) Handles Me.FontChanged MyLV.Font = New Font(Me.Font, If(_ListFontStyle = 0, _ Me.Font.Style, FontStyle.Regular)) End Sub
隐藏,复制Code
<Category("_MCCB specifics")> _ <Description("Action in List when Control's Font changes to Bold")> _ Public Property ListFontStyle() As LFStyle Get Return _ListFontStyle End Get Set(ByVal value As LFStyle) _ListFontStyle = value MCCB_FontChanged(Nothing, Nothing) End Set End Property
隐藏,复制Code
<Category("_MCCB specifics")> _ <Description("Control's Layer Order Action")> _ Public Property LayerOrder() As LayOrder Get Return _LayerOrder End Get Set(ByVal value As LayOrder) If value = 1 OrElse (value = 0 And _LayerOrder = 2) Then Me.BringToFront() ElseIf value = 2 OrElse (value = 0 And _LayerOrder = 1) Then Me.SendToBack() End If _LayerOrder = value End Set End Property
让我们创建一个为列表提供内容的方法。它需要一个字符串数组,每个子项一个字符串,包括任何隐藏列。它很简单,因为这样的数组可以直接转换为所需的ListViewItem类型。返回一个布尔值,表示操作的成功(True)或失败(False): 隐藏,复制Code
Public Function AddRow(SubItems As Array) As Boolean Dim OK As Boolean = False If SubItems.Length > _ColumnIndex + 1 Then MsgBox("SubItems (" & SubItems.Length.ToString & _ ") exceeds the number of Columns (" & _ (_ColumnIndex + 1).ToString & ")...", _ MsgBoxStyle.Critical, _Error) Else Try MyLV.Items.Add(New ListViewItem(SubItems)) _ItemsCount += 1 OK = True Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, _Error) End Try End If Return OK End Function
如何调用这个方法的例子: 隐藏,复制Code
Dim vAge As Byte = 35 Dim vDate As String = Today.ToShortDateString Dim vValue As Single = 1234.56 If Mccb1.AddRow({"John Smith", vAge.ToString, vDate, Format(vValue, "#,###.00")}) = False Then ' Something went wrong... End If
当选择列表行时,必须在相应的框中显示该行的子项。为了执行这个任务,让我们创建一个子ShowSelectedItem,以及要执行这个任务的三种情况:1-我们的控件的属性(不可浏览和隐藏)SelectedIndex, 2-我们的控件的方法FindNextItem和3- ListView事件ItemSelectionChanged。我们控制火灾的事件(ItemSelectionChanged)(代码片段# 1),选择是提高了,每当一个新行,并提供一个字符串数组的值的所有子项选定行,也简单的子()(代码片段# 2)用于显示一个错误消息,当检测到无效的负折射率,和一个函数(GetSubItems)准备上述一系列字符串,用于方法FindNextItem: 隐藏,复制Code
Public Event ItemSelectionChanged(SubItems As Array)
隐藏,复制Code
Private Sub MsgNoNeg(Prefx As String) MsgBox(Prefx & " cannot be negative...", _ MsgBoxStyle.Critical, _Error) End Sub
隐藏,复制Code
Private Sub ShowSelectedItem() Dim BoxName As String For iCtr As Integer = 0 To _ColumnIndex BoxName = "Box" & iCtr.ToString Controls(BoxName).Text = MyLV.Items(_SelectedIndex).SubItems(iCtr).Text Next End Sub
隐藏,复制Code
Private Function GetSubItems() As Array Dim SubItems(_ColumnIndex) As String For iSI As Integer = 0 To _ColumnIndex SubItems(iSI) = MyLV.Items(_SelectedIndex).SubItems(iSI).Text Next Return SubItems End Function
隐藏,复制Code
<Browsable(False)> _ <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _ Public Property SelectedIndex() As Integer Get Return _SelectedIndex End Get Set(ByVal value As Integer) If value < 0 Then MsgNoNeg("Index") Else If value >= _ItemsCount Then MsgBox("Last Index = " & (_ItemsCount - 1).ToString, _ MsgBoxStyle.Critical, _Error) Else If _SelectedIndex >= 0 Then MyLV.Items(_SelectedIndex).Selected = False End If _SelectedIndex = value MyLV.Items(_SelectedIndex).Selected = True ShowSelectedItem() ShowHideList(Show:=False) 'Close List End If End If End Set End Property
隐藏,收缩,复制Code
Public Function FindNextItem(ColumnIndex As Integer, SearchString As String) As Array Dim FoundItem(_ColumnIndex) As String If ColumnIndex >= 0 Then If ColumnIndex > _ColumnIndex Then MsgBox("Maximum ColumnIndex is " & _ColumnIndex.ToString & "...", _ MsgBoxStyle.Critical, _Error) Else If ColumnIndex = _FNIlastIdx And SearchString = _FNIlastStr Then ' Same values, serch next _FNI_iFrom += 1 Else ' New values, search first _FNI_iFrom = 0 _FNIlastIdx = ColumnIndex _FNIlastStr = SearchString End If If _FNI_iFrom >= 0 Then Dim Found As Boolean = False Dim iCtr As Integer For iCtr = _FNI_iFrom To _ItemsCount - 1 If Strings.InStr(MyLV.Items(iCtr).SubItems(ColumnIndex).Text, _ SearchString, CompareMethod.Text) > 0 Then ' Item found... Found = True _SelectedIndex = iCtr FoundItem = GetSubItems() ' Select Item If _SelectedIndex >= 0 Then MyLV.Items(_SelectedIndex).Selected = False End If MyLV.Items(_SelectedIndex).Selected = True ShowSelectedItem() ShowHideList(True) Exit For End If Next _FNI_iFrom = iCtr If Found = False And iCtr = _ItemsCount Then MsgBox("No match...", MsgBoxStyle.Information, "Info") FoundItem = Nothing End If End If End If Else MsgNoNeg("ColumnIndex") End If Return FoundItem End Function
隐藏,复制Code
Private Sub MyLV_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) _ Handles MyLV.ItemSelectionChanged Dim FoundItem(_ColumnIndex) As String If e.IsSelected Then _SelectedIndex = e.ItemIndex ShowSelectedItem() ShowHideList(False) ' Close List RaiseEvent ItemSelectionChanged(GetSubItems) End If End Sub
还有两个简单的方法,Clear和下拉列表: 隐藏,复制Code
Public Sub Clear() MyLV.Items.Clear() _ItemsCount = 0 For iCtr As Integer = 0 To _ColumnIndex Controls("Box" & iCtr.ToString).Text = "" Next ShowHideList(False) ' Close the List End Sub
隐藏,复制Code
Public Sub DropDown() ShowHideList(True) ' Drop-down the List End Sub
这是所有。我组织控制的代码在区域: 隐藏,复制Code
Imports Enums & Variables Public Properties Public Methods Public Event Control Events Private Subs/Functions Initialization
#区域“初始化”是由设计器生成的代码。 最后,在你的WinForms应用程序: 将MCCB.dll复制到它的启动路径(在项目中\bin\调试或\bin\Release),然后在Visual Studio中最终的. exe文件夹中添加一个Reference: Menu Project - Add Reference…-浏览…- mccb .dll在工具箱中放置一个图标():菜单工具-选择工具箱项目…- .NET框架组件-浏览…——MCCB.dll。该图标将出现在所有Windows窗体组下。 控件本身的属性、方法和事件的简要描述 属性 盒子的背面颜色(es)。Box borderstyle -框的边框样式。盒子前色-盒子的前色。箱高-箱高(es)。标题的背面颜色。标题的边框样式。标题前的颜色。HeaderHeight -标题的高度。控制的层命令动作。ListBackColor -列表的返回颜色。列表的边框样式。ListFontStyle -当控件的字体更改为粗体时,在列表中操作。ListForeColor—列表的前颜色。MaxItemsDisp—列表中显示的最大项数。SelectedIndex—在列表中被选择(或将要被选择)的项目的索引。 方法 AddColumn(宽度为整数,文本为字符串,[Align As HorizontalAlignment = horizontalalignated .Left])—添加一个列,给定它的宽度(以像素为单位),它的(标题)文本和它的对齐方式(左、中、右)。AddRow(子条目为数组)——向列表中添加一行,给定一个字符串数组。返回一个布尔值,指示操作的成功(真)或失败(假)。清除——清除控件的列表和框。下拉列表-下拉列表。FindNextItem(ColumnIndex作为整数,SearchString作为字符串)作为数组——在给定的列的值中查找给定字符串的下一个出现点。选择发生匹配的行及其子数组物品返回。当没有更多匹配时,数组什么也不是,但是最后选中的行仍然是选中的。 事件 ItemSelectionChanged(子项目作为数组)——当从列表中选择了新行时发生。 历史 09.年3月。2016 -第一岗位 本文转载于:http://www.diyabc.com/frontweb/news365.html