2010年5月21日金曜日

TreeViewコントロールの不具合

.Net 3.5までのTreeViewコントロールは追加した項目の最終行が見切れたり表示しない現象が発生します。.Net 4.0では発生しない事を確認しました。

次の様な簡単なテストプログラムを準備します。
(MSDNフォームに投稿したコードと同じです。→MSDNフォーラム)



(1)適当なVisialBasicのWindowsフォームアプリケーションプロジェクトを作成する
(2)Form1.vbをデザインで開き、TreeViewコントロールを配置する(Location=20,20)(Sizeは200,100)
(3)Anchorを「Top,Bottom」に設定する
(4)Form1.vbのコードに次のようにコーディングする

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles MyBase.Load

    For _i As Integer = 1 To 10
      TreeView1.Nodes.Add(String.Format("{0}", _i))
    Next
  End Sub

実行する

現象の確認

(1)Form1をリサイズすると、「1」~「9」まではスクロールバーが表示してスクロールすれば「10」が表示されるが、
リサイズしてスクロールバーが消えた時のTreeViewではスクロールによって「10」を表示することができない。




回避策
次のコードをForm_Loadで実行する
Dim _mi As Reflection.MethodInfo = TreeView1.GetType().GetMethod("ForceScrollbarUpdate", _
                                       Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
_mi.Invoke(TreeView1, New Object() {True})



0 件のコメント:

コメントを投稿