コンボボックス型セルのドロップダウンリストの先頭の項目が空文字の場合、Windows Server 2012上でドロップダウンリストが正しく表示されないことがある
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
コンボボックス型セルのドロップダウンリストの先頭の項目に空文字が設定されている場合、Windows Server 2012上でドロップダウンボタンをクリックしてもドロップダウンリストが正しく表示されないことがあります。
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.B1セルのドロップダウンボタンを何度かクリックします
--ドロップダウンリストが正しく描画されない場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim comboType As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
comboType.Items = New String() {"", "東京", "大阪", "福岡"}
FpSpread1.ActiveSheet.Columns(1).CellType = comboType
End Sub
【手順】
1.新規フォームにSPREADを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.B1セルのドロップダウンボタンを何度かクリックします
--ドロップダウンリストが正しく描画されない場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim comboType As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
comboType.Items = New String() {"", "東京", "大阪", "福岡"}
FpSpread1.ActiveSheet.Columns(1).CellType = comboType
End Sub
回避方法
Service Pack 3(v7.0.2014.2008)で修正済み。
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
ListControlを使用して高さを明示的に設定します。
【サンプルコード】
Private mintMaxDrop As Integer = 0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim comboType As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
Dim lst As New ListBox()
AddHandler lst.VisibleChanged, AddressOf lst_VisibleChanged
lst.Items.AddRange(New String() {"", "東京", "大阪", "福岡"})
comboType.ListControl = lst
mintMaxDrop = comboType.MaxDrop
FpSpread1.ActiveSheet.Columns(1).CellType = comboType
End Sub
Private Sub lst_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim lst As ListBox = DirectCast(sender, ListBox)
If (Visible AndAlso lst.Height < lst.ItemHeight AndAlso lst.Items.Count > 0) Then
Dim count As Integer = lst.Items.Count
If (count > mintMaxDrop) Then
count = mintMaxDrop
End If
lst.Height = lst.ItemHeight * count + 4
End If
End Sub
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
ListControlを使用して高さを明示的に設定します。
【サンプルコード】
Private mintMaxDrop As Integer = 0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim comboType As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
Dim lst As New ListBox()
AddHandler lst.VisibleChanged, AddressOf lst_VisibleChanged
lst.Items.AddRange(New String() {"", "東京", "大阪", "福岡"})
comboType.ListControl = lst
mintMaxDrop = comboType.MaxDrop
FpSpread1.ActiveSheet.Columns(1).CellType = comboType
End Sub
Private Sub lst_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim lst As ListBox = DirectCast(sender, ListBox)
If (Visible AndAlso lst.Height < lst.ItemHeight AndAlso lst.Items.Count > 0) Then
Dim count As Integer = lst.Items.Count
If (count > mintMaxDrop) Then
count = mintMaxDrop
End If
lst.Height = lst.ItemHeight * count + 4
End If
End Sub