2017-05-29 31 views
1

私はsplitContainerを持っています。 Splitterを以下のように動かすと、splitContanerのパネル内のフォームのサイズを変更して、スケールする必要があります。しかし、私のフォームは再描画されません。どんな提案、ありがとう!あなたのアプリケーションのウィンドウを表す最上位の制御のはずC#splitContainer1サイズ変更子コントロール

private void splitContainer1_SplitterMoved(System.Object sender, System.Windows.Forms.SplitterEventArgs e) 
    { 
     // Define what happens when the splitter is no longer moving. 
     Cursor.Current = System.Windows.Forms.Cursors.Default; 
     statictisTableDisplayForm1.ClientSize = new Size(statictisTableDisplayForm1.Width, splitContainer1.SplitterDistance); 
     statictisTableDisplayForm1.Invalidate(); 
     statictisTableDisplayForm1.Refresh(); 
     Refresh(); 
    } 
+0

分割されたコンテナ内でコントロールのサイズを変更したいと思っていますが、コードでは何らかの形式のサイズが設定されています。あなたはどのようなコントロールを持っているか、これらのコントロールがどのように配置されているのか、スプリッタを移動した後に何を起こそうとしているのかを詳細に記述してください。 –

+0

ああ、申し訳ありません! splitContainerパネル1内の私のコントロールはフォームです。私は、スプリッターの上に移動すると、フォームはスプリッターによってトランケートされずに、サイズが小さくなるようにサイズ変更されます。 – LN22

+0

なぜ、パネルはパネルではなくフォームを置くのですか?そしてどうやって?ここでエラーが発生します。 'トップレベルのコントロールはここに追加できません'。 PanelまたはUserControlなどの場合、Dock = Fill、btw ..を設定します。 – TaW

答えて

1
  1. フォーム。フォームを他のフォームにコントロールとして埋め込むべきではありません(他のオプションがない限り)。
  2. 通常、コントロールのサイズを変更したり、手動でコントロールを移動したりしないでください。コンテナのサイズが変更されたときのコントロールの自動サイズ変更を可能にするレイアウトオプションがいくつかあります:Anchor,Dock

だから、より良いコントロールとあなたのStatictisTableDisplayFormのロジックを含み、FillからDockセットでSplitContainerパネルに配置しますユーザーコントロールを作成します。スプリッターを動かすと、自動的にユーザーコントロールのサイズが変更されます。

注:StatictisTableDisplayFormを自分自身で使用する必要がある場合は、このフォームに同じユーザーコントロールを配置してください。

+1

ありがとう、兄。私はDockとAnchorでもっと見る必要があります – LN22

関連する問題