2017-02-17 10 views
1

実行時に、TableLayoutPanelから継承するコントロールにコントロールを追加しています。コントロールは、ループではなくユーザーの操作に基づいて、一度に1つずつ追加されます。ここでTableLayoutPanelの最下行をビューにスクロールする方法

は、TLPから継承私のコントロールの設定です:

this.RowCount = 0; 
this.RowStyles.Clear(); 
this.Dock = DockStyle.Fill; 
this.VerticalScroll.Enabled = true; 
this.HorizontalScroll.Enabled = false; 
this.AutoScroll = true 

そして、私はこのようなパネルの下部にユーザーコントロールを追加している:

var uc = new FooControl(); 
this.Controls.Add(uc); 
this.SetRow(uc, this.Controls.Count - 1); 
this.SetColumn(uc, 0); 

私は希望しますその行/コントロールをビューにスクロールします。

どうしたのですか?

答えて

1

のように、コントロールを表示するにはScrollableControlをスクロールするには、ScrollControlIntoViewメソッドを使用できます。

this.ScrollControlIntoView(uc); 

注:たとえばこれは、コントロールを選択しません。

また、Selectコントロールのメソッドを呼び出すと、コントロールのメソッドが選択され(選択可能な場合)、スクロール可能な親がスクロールされて、選択した子コントロールが表示されます。たとえば:

uc.Select(); 
0

あなたはパネルのVerticalScrollを設定することによってそれを行うことができますが、私は代わりにScrollControlIntoViewを使用する方が良いと思います。

private void panel1_ControlAdded(object sender, ControlEventArgs e) 
{ 
    panel1.ScrollControlIntoView(e.Control); 
} 

または

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 
+0

'panel.VerticalScroll.Value = panel.VerticalScroll.Maximum'は実際には動作しません。それをテストしたいかもしれません。 – LarsTech

関連する問題