コンボボックス型セルのドロップダウンリストの先頭の項目が空文字の場合、Windows Server 2012上でドロップダウンリストが正しく表示されないことがある

文書番号 : 37420     文書種別 : 不具合     登録日 : 2014/07/22     最終更新日 : 2014/08/12
文書を印刷する
対象製品
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
回避方法
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