はじめ奇妙な自動スクロール動作
私は、単純なユーザーコントロールを書かれています。
コントロールにはFlowLayoutPanelとボタンが含まれています。
private void uxAdd_Click(object sender, EventArgs e)
{
count++;
Label label = new Label();
label.Text = "Label " + count.ToString();
uxFlowLayout.Controls.Add(label);
}
Add
ボタンがFlowLayoutPanel
上にラベルを追加し、FlowLayoutPanel.AutoSize
とコントロールのAutoSize
プロパティがtrueとFlowLayoutPanel.FlowDirection
に等しいのでTopDown
制御するに等しく、次のように
ボタンのクリックイベントハンドラです高さを増やす。
フォームにユーザーコントロールを配置し、フォームのAutoScroll
プロパティをtrueに設定しました。
private void MainForm_Layout(object sender, LayoutEventArgs e)
{
uxSection.Width = this.ClientSize.Width;
}
(uxSectionは私がはじめセクションの冒頭で話しているユーザーコントロールである)
:
はまた、私は、次のレイアウトイベントハンドラを書きました問題
ここに私がやっているのは:
ステップ0。プログラムを実行します。
ステップ1。垂直スクロールバーが表示されるように、ラベルをいくつか追加します。
ステップ2。フォームの下部までスクロールします。
ステップ3。フォームを水平方向にサイズ変更します。
あなたが見ることができるように、フォームのサイズを変更した後、スクロールバーの位置は、(私はそれが一番下にあることを期待)一番下にはありません。
質問には何がないのですか?スクロールバーが一番上に戻るのはなぜですか?
スクロールバーがフォーム上にあり、UserControl上にないように見えるのはなぜですか? FlowLayoutPanel内のボタンもですか?ラベルはフォーカスを得ることができませんが、ボタンができるので、スクロールして表示されます。 WinFormsは、ユーザーが画面上のアクティブなコントロールを表示するのを手助けしようとしています。 – LarsTech
@LarsTech:スポットがあります! – RvdK
@LarsTech:チップをありがとう。いくつかのGoogleの検索後、私はここで回避策を見つけました:http://nickstips.wordpress.com/2010/03/03/c-panel-resets-scroll-position-after-focus-is-lost-and-regained/ –