17

私が持っているもの:

パネル (空白) と、緑と青の四角で表される 2 つの DataGridView があります。パネルは画面の中央の大部分を占めるように固定されており、ウィンドウ サイズに合わせて拡大/縮小します。

必要なもの:

緑色の正方形が常に画面中央の右端に留まり、画面の左半分を占めるようにしたいと思います。同様に、青い四角形が左の境界線を中央に置き、画面の右半分を占めるようにしたいと思います。

基本的には、常にこの画像のように見えるようにしたいだけです。

プログラムでこれを行う必要がありますか? これを実現するアンカーまたはドッキングの組み合わせが見つからないようで、コンテナとしてパネルを追加すると、最終的に同じ問題が発生します。

パネル レイアウトの DataGridView

4

3 に答える 3

25

これがあなたが望むものかどうかわからない:

  1. 画面上に SplitContainer を作成します。

    Anchor = Top, Bottom, Left, Right
    IsSplitterFixed = True (Trick)
    
  2. 別の 2 つの datagridview を作成し、それぞれが SplitterContainer 内にある

    Dock = Fill
    
于 2012-07-18T20:36:16.510 に答える
13

私は通常、TableLayoutPanelこれを達成するために a を使用します。使い方はとても簡単です (簡単な紹介はここにあります)。

最初の行のセルを作成し、それぞれ 50% の幅に設定します。各セルに 1 つ入れDataGridて、そのDock'ing を に設定しますFill

于 2012-07-18T20:31:49.380 に答える
0

問題なく動作する TableLayoutPanel で解決策を試しました。

ただし、別の配置を使用する場合、TableLayoutPanel 内でのレイアウトは少し不便で制限があります。

少しのプログラミング作業でそれを行う別のソリューションを見つけました。

  • 左のアイテムの場合、左への固定を定義します
  • 右側のアイテムの場合、左右のアンカーを定義しません

これにより、フォームのサイズを変更するときに左のアイテムがその位置に残り、右のアイテムが中央の位置にとどまって移動します。

次の行を実装する OnSizeChanged ハンドラーをフォームに追加しました。

int widthForItem = Item2.Left - Item1.Left; // you can subtract a distance here
Item1.Width = widthForEachItem;
Item2.Width = widthForEachItem
于 2020-11-10T15:46:01.437 に答える