2012-04-09 17 views
0

私は単純なツリービュー(このようなもの - http://www.mono-project.com/GtkSharp_TreeView_Tutorial)を200個のアイテムで満たし、スクロールバーに接続しました。すべてが機能しますが、項目を選択して矢印キーを使用すると、選択した項目が可視領域外になることがあります。 (;すぐ内側のグリッドを作るこのtree.EnableGridLines = TreeViewGridLines.Both)テーブルに黒い境界線を描画する方法:Gtkツリービューの問題

void HandleTreeSelectionChanged (object sender, EventArgs e) 
{ 
    vadjustment.Value=SELECTED-ITEM.DISTANCE-FROM-TOP-OF-TREEVIEW; 
} 

そして、もう一つの質問は、すなわち、それに集中することが可能であるか、スクロールバーの調整を設定します。 ありがとうございます。 Matej

答えて

0

スクロールバーをツリービュー(またはテキストビュー)に追加するには、GtkScrolledWindowに追加するだけです。すべてを自動的に処理します。私はそれがまたほとんどのテーマで境界線を作成すると確信しています。

更新:また、ツリービューとスクロールバーの調整を設定することで、任意のスクロールバーにも「バインド」ツリービューのスクロール動作を行うことができます

scrollbar = gtk.VScrollbar(treeview.props.vadjustment)

(ああ、それですPyGTKの構文; Gtk#でおそらくtreeview.VAdjustmentです。)

+0

申し訳ありませんが、別にする必要があります。私は選択された項目に従う方法を知る必要があります(ユーザが矢印キーを押したときに、私はvadjustment.Valueにいくつかの数字を追加する必要があります)と矢印キーを押したとき、私はvadjustment.Valueからいくつかの数字を削除する必要があります。前もって感謝します。 – matej148

+0

matej148:更新を参照してください。 –

+0

ありがとうございますが、私はスクロールバーに接続されたツリービューを持っていますが、うまくいきます。ユーザーが選択した項目を変更したときにVAdjustmentを変更する必要があります。問題は、これに追加または削除する必要がある値がわからないということです。vadjustment.Value = SELECT-ITEM.DISTANCE-FROM-TOP-OF-TREEVIEW (ユーザーが矢印キーを押したとき) – matej148

0

私はJohannes' answerと奇妙なことをしているようですが、実際にはGtkScrolledWindowを使う必要があります。それはキーボードの操作(あなたがヨハネスの答えにあなたのコメントに記述しているように思われる)も処理する必要があります。これは手動で行う必要があるものではありません。

とにかく質問に答えようとすると、gtk_tree_view_scroll_to_cell()を使用してツリービューを任意のセルにスクロールさせることができます。

+0

ありがとう、あなたの答えはありますが、ScrollToCell関数は動作しません私はスクロールバーとツリービューを分離しているので(私はちょうどそれを試みた)私のために。それはテーブルに接続されています:layout.Put(tree、0、0); テーブルテーブル=新しいテーブル(1,2、偽); table.Attach(レイアウト、0,1,0,1、Gtk.AttachOptions.Expand | Gtk.AttachOptions.Fill、Gtk.AttachOptions.Expand | Gtk.AttachOptions.Fill、0、0); table.Attach(vscrollbar、1,2、0,1、Gtk.AttachOptions.Shrink、Gtk.AttachOptions.Shrink | Gtk.AttachOptions.Fill、0、0);私はtree.Selection.Changed + = HandleTreeSelectionChangedでイベント(行選択)を捕捉します。 – matej148