6

パネルでは、パネルの開始位置 (0,0) に配置されたボタン/テキスト ボックスなどのコントロールを描画します。これらのコントロールは、最初は非表示で無効になっています。パネルの外側にボタンがあり、これらのボタン/テキストボックスを押すと表示され、パネル内の新しい場所に配置されます。

問題は、ユーザーがパネルをいくつかの (x,y) にスクロールしてから、「可視化」ボタンを押すと、ボタンの新しい (x,y) 位置がパネルの現在の (x,y) 位置から計算されることです。パネルの上 (0,0) からではありません。

これがパネルの正しい動作であるかどうか疑問に思っています。これを修正するにはthis.VerticalScroll.Value、ボタンを再配置するときに (x,y) オフセットとして考慮する必要があります。

ここに画像の説明を入力

4

2 に答える 2

2

これが私のために働いたものです。ボタン/テキストボックスなどの Y を取得したら、次のようにします。

relativeControlTop = theControl.Top - thePanel.AutoScrollPosition.Y;

トップを設定するときは、次のようにします。

relativeControlTop = theControl.Top + thePanel.AutoScrollPosition.Y;

お役に立てれば。

于 2012-11-12T16:38:14.047 に答える
0

あなたの状況で役立つかどうかはわかりませんが、試してみる価値があると思います:

ビジュアル デザイナーを使用してパネルをデザインする場合は、 2 つのパネルを使用することをお勧めします。そして、意図した物理サイズを持つ小さい方。次に、大きい方を小さい方の唯一の子として追加します (bottomPanel の innerPanel など)。

詳細については、この記事記事: WinForms AutoScroll Experimentを参照してください。

于 2012-11-09T20:42:49.883 に答える