作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发一个自定义组合框(在工具条中),其中的项目是 5 种字体样式,我将按它们的外观显示。
问题:我无法设置每个项目的大小。 MeasureItem 事件没有触发,我找不到原因。
不远但不完全是我的节奏! ^^
这是我的代码:
Public CorpusFontStyleTitre1 As Font = New Font(New FontFamily("Lato"), 18, FontStyle.Bold, 3)
Public CorpusFontStyleTitre2 As Font = New Font(New FontFamily("Lato"), 16, FontStyle.Underline Or FontStyle.Bold, 3)
Public CorpusFontStyleTitre3 As Font = New Font(New FontFamily("Lato"), 14, FontStyle.Underline Or FontStyle.Bold, 3)
Public CorpusFontStyleTitre4 As Font = New Font(New FontFamily("Lato"), 12, FontStyle.Underline, 3)
Public CorpusFontStyleCorpsdeTexte As Font = New Font(New FontFamily("Lato"), 12, FontStyle.Regular, 3)
Public Structure CorpusFontStyleItem
Dim strTextStyleName As String
Dim fontTextStyle As Font
Public Overrides Function ToString() As String
Return strTextStyleName
End Function
End Structure
Private Sub frmCorpusManagement_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadcmbFontStyle()
cmbFontStyle.ComboBox.DrawMode = DrawMode.OwnerDrawFixed
AddHandler cmbFontStyle.ComboBox.DrawItem, AddressOf cmbFontStyle_DrawItem
AddHandler cmbFontStyle.ComboBox.MeasureItem, AddressOf cmbFontStyle_MeasureItem
End Sub
Private Sub cmbFontStyle_MeasureItem(ByVal sender As Object, ByVal e As MeasureItemEventArgs)
Select Case e.Index
Case "1"
e.ItemHeight = 50
Case "2"
e.ItemHeight = 40
Case "3"
e.ItemHeight = 30
Case "4"
e.ItemHeight = 20
Case "5"
e.ItemHeight = 10
End Select
End Sub
Private Sub cmbFontStyle_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs)
e.DrawBackground()
Dim myItem As CorpusFontStyleItem = DirectCast(cmbFontStyle.Items(e.Index), CorpusFontStyleItem)
e.Graphics.DrawString(myItem.strTextStyleName, myItem.fontTextStyle, New SolidBrush(Color.Black), e.Bounds)
e.DrawFocusRectangle()
End Sub
Private Sub LoadcmbFontStyle()
Dim itemCorpusFontStyleTitre1 As New CorpusFontStyleItem With {.strTextStyleName = "Titre 1", .fontTextStyle = CorpusFontStyleTitre1}
Dim itemCorpusFontStyleTitre2 As New CorpusFontStyleItem With {.strTextStyleName = "Titre 2", .fontTextStyle = CorpusFontStyleTitre2}
Dim itemCorpusFontStyleTitre3 As New CorpusFontStyleItem With {.strTextStyleName = "Titre 3", .fontTextStyle = CorpusFontStyleTitre3}
Dim itemCorpusFontStyleTitre4 As New CorpusFontStyleItem With {.strTextStyleName = "Titre 4", .fontTextStyle = CorpusFontStyleTitre4}
Dim itemCorpusFontStyleCorps As New CorpusFontStyleItem With {.strTextStyleName = "Corps de Texte", .fontTextStyle = CorpusFontStyleCorpsdeTexte}
cmbFontStyle.Items.Add(itemCorpusFontStyleTitre1)
cmbFontStyle.Items.Add(itemCorpusFontStyleTitre2)
cmbFontStyle.Items.Add(itemCorpusFontStyleTitre3)
cmbFontStyle.Items.Add(itemCorpusFontStyleTitre4)
cmbFontStyle.Items.Add(itemCorpusFontStyleCorps)
End Sub
最佳答案
您使用了错误的绘图模式。将其更改为:
cmbFontStyle.ComboBox.DrawMode = DrawMode.OwnerDrawVariable
此外,Select Case e.Index
是一个整数,而不是一个字符串。它是从零开始的,所以你不是在衡量第一项。将其更改为:
Select Case e.Index
Case 0
e.ItemHeight = 50
Case 1
e.ItemHeight = 40
您应该尝试实际测量字体高度而不是猜测数字。
关于vb.net - ComboBox MeasureItem 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70036266/
我正在尝试开发一个自定义组合框(在工具条中),其中的项目是 5 种字体样式,我将按它们的外观显示。 问题:我无法设置每个项目的大小。 MeasureItem 事件没有触发,我找不到原因。 所以它看起来
我有一个带有嵌入式表格控件的 StyledText 小部件。但是,一旦我添加 MeasureItem 监听器来调整表格单元格的大小,表格就会在我第一次滚动时出现在 StyledText 小部件的顶部,
我是一名优秀的程序员,十分优秀!