2009-07-31 1 views
0

私は2つのツリービューを持つwinformを持っています。私の左のツリービューには、ボタンをクリックすることによってロードされている広告サーバーからのデータがロードされています。これは、私のデータを取得し、私のツリーを構築する私のバックグラウンドワーカーを引き起こします。TreeViewの途中にWindows Forms Pictureboxを保存する

これを実行している間、私はtreeviewコントロールを無効にし、それにアニメーションgifを含むピクチャボックスを表示します。だから私のバックグラウンドワーカーが終了したら、私はツリービューを元に戻し、自分のピクチャボックスを隠すことができます。

私がしたいことは、ピクチャボックスがツリービューの中央にとどまっていることです。両方のツリービューは分割されたコンテナ上にあります。だから、私はそれらのパネルの境界線を取得する必要がありますか? フォームのサイズが変わると、私のpictureboxはツリービューの中央にうまくとどまります。

答えて

0

ツリービューと同じサイズと場所にパネルを作成します。このツリービューをパネルに追加し、DockStyle.Fillに設定します。パネルに画像を追加し、アンカーをAnchorStyles.Noneに設定します。

this.panel1.Controls.Add(treeView2); 
this.panel1.Controls.Add(pictureBox1); 

this.treeView2.Dock = DockStyle.Fill; 
this.pictureBox1.Anchor = AnchorStyles.None; 

アンカースタイルAnchorStyles.Noneは、パネルの中央にあなたの写真のボックスを維持します。ツリービューの前にピクチャボックスを設定します。一度、あなたの処理は画像ボックスを隠すだけです。

+0

これは簡単な解決策でした:-) – Gerbrand

0

フォームの設定方法についてはっきりしていませんが、フォームのサイズ変更イベントまたはTreeView Resizeイベントにロジックを配置する必要があります。

いずれかのサイズを変更した場合は、イメージを画像の半分を引いた位置から、TreeViewの半分の位置に配置します。

0
OnFormResize() 
{ 
    Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width)/2, 
     (Form.ClientRectangle.Height - pictureBox1.Height)/2); 
    pictureBox1.Location = ul; 
}