TreeViewの途中でWindows Forms Pictureboxを保持する
-
06-07-2019 - |
質問
2つのツリービューを持つwinformがあります。左のツリービューには、ボタンをクリックしてロードされるアドサーバーからのデータがロードされています。これにより、バックグラウンドワーカーがトリガーされ、データが取得されてツリーが構築されます。
これを行う間、ツリービューコントロールを無効にし、アニメーションGIFが表示されたピクチャボックスを表示しています。バックグラウンドワーカーが終了したら、ツリービューを有効にして、ピクチャボックスを非表示にします。
だから私がしたいのは、ピクチャボックスがツリービューの中心に留まることです。両方のツリービューは分割されたコンテナ上にあります。だから多分私はそれらのパネルの境界線を取得する必要がありますか? そのため、フォームのサイズが変更されても、ピクチャボックスはツリービューの中央にうまくとどまります。
解決
ツリービューと同じサイズと場所にパネルを作成します。このツリービューをパネルに追加し、 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 は、画像ボックスをパネルの中央に保持します。ピクチャボックスをツリービューの前に設定します。処理が終了したら、画像ボックスを非表示にします。
他のヒント
フォームの設定方法は明確ではありませんが、フォームのResizeイベントまたはTreeView Resizeイベントにロジックを配置する必要があります。
いずれかのサイズを変更したら、画像をTreeViewの半分の位置から画像の幅の半分を引いた位置に配置し、高さを繰り返します。
OnFormResize()
{
Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width) / 2,
(Form.ClientRectangle.Height - pictureBox1.Height) / 2);
pictureBox1.Location = ul;
}
所属していません StackOverflow