|
分類:[.NET 全般]
.NET Framework4.8にてListBoxを使用してアイテムを複数選択できるよう設定し、そのアイテムの中で常時選択状態とし選択解除できないアイテムを作成しようとしています。
Public Class ListBoxEX
Inherits ListBox
Private _FixList As List(Of Integer)
Public Property FixList As List(Of Integer)
Get
Return _FixList
End Get
Set(value As List(Of Integer))
If value IsNot Nothing Then
_FixList = value
Try
Me.SelectedIndices.Clear()
For Each i In _FixList
Me.SelectedIndices.Add(i)
Next
Catch ex As Exception
Throw New ArgumentOutOfRangeException("強制選択項目がありません", ex)
End Try
End If
End Set
End Property
Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
Dim index As Integer = Me.IndexFromPoint(e.Location)
If index >= 0 Then
If FixList.Contains(index) Then
'選択解除できない項目
If Me.SelectedIndices.Contains(index) = False Then
Me.SelectedIndices.Add(index)
End If
Return
Else
End If
End If
MyBase.OnMouseDown(e)
End Sub
End Class
といった形でMouseDownされた時にその項目が選択解除できないアイテムであった時に選択が解除されていれば再度選択するといった動作にしています。
(コードにて選択解除されるといったことはOKとします)
この時、マウスボタンをダウンしたとき一瞬選択が解除された状態が表示されることがあります。
というかOnMouseDownに入ってきたときには選択が解除されています。
この一瞬解除される描画を止めるというかOnMouseDownに入ってくる前の選択解除を止めることはできるのでしょうか?
|