类型 "Record" 未在自定义 class vb.net 中定义
Type "Record" is not defined in custom class vb.net
我正在按照下面的主题创建多行组合框。我目前使用的是 Visual Studio 2019,该线程来自 2013。
Any way for a combo box with 2 values per line?
我复制的代码:
Public Class MultiLineComboBox : Inherits ComboBox
Public Sub New()
' Call the base class.
MyBase.New()
' Typing a value into this combobox won't make sense, so make it impossible.
Me.DropDownStyle = ComboBoxStyle.DropDownList
' Set the height of each item to be twice its normal value
' (because we have two lines instead of one).
Me.ItemHeight *= 2
End Sub
Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
' Call the base class.
MyBase.OnDrawItem(e)
' Fill the background.
e.DrawBackground()
' Extract the Record object corresponding to the combobox item to be drawn.
If (e.Index >= 0) Then
Dim record As Record = DirectCast(Me.Items(e.Index), Record)
' Format the item's caption string.
Dim caption As String = String.Format("ID: {0}{1}Name: {2}", record.UniqueID.ToString(), Environment.NewLine, record.Name)
' And then draw that string, left-aligned and vertically centered.
TextRenderer.DrawText(e.Graphics, caption, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.Left Or TextFormatFlags.VerticalCenter)
End If
' Finally, draw the focus rectangle.
e.DrawFocusRectangle()
End Sub
End Class
我创建了一个名为 MultiLineComboBox 的 class,完全按照说明操作,它显示“未定义类型 'Record'”。我一直在寻找关于“记录”或 DirectCast 类型的答案(例如 https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/directcast-operator),但到目前为止 none 对我有帮助。
我的声誉目前 <50,所以我也不能对该线程的答案发表评论。大家能帮我解决一下吗?
(添加了标签 visual-studio-2019 和 .net-4.7.2 以防 VS 或 .NET 版本出现问题)
阅读整个答案。 Record
class 在那里声明;您也需要它,并且您想要更改代码以匹配组合框的字段。
我正在按照下面的主题创建多行组合框。我目前使用的是 Visual Studio 2019,该线程来自 2013。
Any way for a combo box with 2 values per line?
我复制的代码:
Public Class MultiLineComboBox : Inherits ComboBox
Public Sub New()
' Call the base class.
MyBase.New()
' Typing a value into this combobox won't make sense, so make it impossible.
Me.DropDownStyle = ComboBoxStyle.DropDownList
' Set the height of each item to be twice its normal value
' (because we have two lines instead of one).
Me.ItemHeight *= 2
End Sub
Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
' Call the base class.
MyBase.OnDrawItem(e)
' Fill the background.
e.DrawBackground()
' Extract the Record object corresponding to the combobox item to be drawn.
If (e.Index >= 0) Then
Dim record As Record = DirectCast(Me.Items(e.Index), Record)
' Format the item's caption string.
Dim caption As String = String.Format("ID: {0}{1}Name: {2}", record.UniqueID.ToString(), Environment.NewLine, record.Name)
' And then draw that string, left-aligned and vertically centered.
TextRenderer.DrawText(e.Graphics, caption, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.Left Or TextFormatFlags.VerticalCenter)
End If
' Finally, draw the focus rectangle.
e.DrawFocusRectangle()
End Sub
End Class
我创建了一个名为 MultiLineComboBox 的 class,完全按照说明操作,它显示“未定义类型 'Record'”。我一直在寻找关于“记录”或 DirectCast 类型的答案(例如 https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/directcast-operator),但到目前为止 none 对我有帮助。
我的声誉目前 <50,所以我也不能对该线程的答案发表评论。大家能帮我解决一下吗?
(添加了标签 visual-studio-2019 和 .net-4.7.2 以防 VS 或 .NET 版本出现问题)
阅读整个答案。 Record
class 在那里声明;您也需要它,并且您想要更改代码以匹配组合框的字段。