問題タブ [splitcontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2414 参照

c# - SplitContainer と TableLayoutPanel の両方の長所を組み合わせた Winforms コントロール

SplitContainer を使用すると、ユーザーはコントロールの両側のサイズを変更できます。ただし、2 つのセクションに限定されます。

TableLayoutPanel を使用すると、無制限の行と列を使用できます。残念ながら、ユーザーはこれらのセクションをドラッグすることはできません。

どうすれば両方の長所を活かすことができますか。SplitContainer の中央バーの「ドラッグ可能性」と、TableLayoutPanel が許可するように 2x1 を超えるセクションを持つ機能はありますか?

Winforms がそれを許可しない場合、商用コンポーネントが存在する可能性がありますか? .NET 以外のプログラムで、この種の高度な制御を見たことがあることは知っています。

0 投票する
1 に答える
4611 参照

c# - SplitContainersまたはPanelsにあるものであっても、WinFormのすべてのコントロールのリストを取得する方法

私の WinForm には、Panel、SpliContainer、StatusStrip などのいくつかのコンテナーがあります。これらの各コンテナーには、ボタンやテキスト ボックスなどの基本的な要素が含まれています。コントロールを見つけるには、すべてのフォーム コントロール (Panels、SplitContainers、StatusStrip 内のものも含む) を反復処理する必要があります。再帰関数で試してみます

しかし、コンテナにあるコントロールを取得できません!?

アップデート:

SplitContainer、Panel、および StatusStrip を含む Form があります。これらの各コントロールには、StatuStrip1 の toolStripStatusLabel1 のようないくつかの子コントロールがあります。問題は、たとえば、関数 ListAllControls を介して StatuStrip のコントロール toolStripStatusLabel1 を見つけようとすると、見つからない!? フォームからすべてのコントロールを取得する別の方法はわかりません。完全なコードは次のとおりです。

サンプル:

このサンプルでは、​​見つかりませんでした :(しかし、StatusStrip1 を使用すると、「コントロール StatusStrip1 が見つかりました!」 という質問が以前よりも明確になることを願っています。

0 投票する
1 に答える
956 参照

c# - SplitContainer を動的に追加するにはどうすればよいですか?

設計時には、FlowLayoutPanel を含むフォームがあります。その中にボタンを問題なく作成できます。しかし、SplitContainer を追加しようとしても、何も起こりません。

後で、別の SplitContainer 内に Splitcontainer を追加する必要があります。したがって、ユーザーはフォームに表示するセクション (パネル) の数を選択できます。

私はこれを試しています:

0 投票する
3 に答える
1266 参照

c# - C# Panel1 と Panel2 の Paint イベントを強制的に同時に完了するにはどうすればよいですか?

私は SplitContainer (正確にはNonFlickerSplitContainerの1 つ) を持っており、その両方のパネルをペイントする単一のキャンバスとして扱います。Graphics.DrawImage メソッドを使用して、パネルにビットマップを個別に描画します。最初に Panel1 を更新し、次に Panel2 を更新すると、垂直/水平の引き裂きが発生します - Panel1 の描画が終了し、次に Panel2 の描画が開始されます - これが理由です。私の問題の解決策は何ですか?ビフォア/アフター機能を備えた「ビットマップ ビデオ ストリーム」への出力として、splitContainer を使用します。Panel2_Paint が終了するまで、どうにかして UI をフリーズできますか?

0 投票する
1 に答える
676 参照

c# - DataGridView に SplitContainer の使用可能なスペースを強制的に埋める

次の図に示すように、使用可能な 3 つの領域のうち 2 つの DataGridViews で 2 つの入れ子になった SplitContainers を使用する Windows フォーム アプリケーションを作成中です。設定とフォームの初期化を配線して、ユーザーが最初の DataGridView だけで構成される単一ペイン ビューを優先してマルチペイン フォーマットを無効にできるようにしました。

ここでの主な問題 ((できれば) 十分に詳しく説明します) は、他のパネルが非表示の場合、DataGridViews が SplitContainer パネルの制約に準拠しないことです。

DataGridView/SplitContainer レイアウト

ここで、赤いアウトラインは、参照で適切に呼び出された親 SplitContainer を示しmasterSplitContainerます。bottomSplitContainer青いアウトラインは、位置を占めているというタイトルの子 SplitContainer を示しますmasterSplitContainer.Panel2

DataGridViews は と の両方の領域を占有しmasterSplitContainer.Panel1ますbottomSplitContainer.Panel1。これまでのところ、プログラムが 3 つの可能性を考慮できるように初期化コードを設計しました。

  1. ユーザーは単一ペインのみのビュー/UI レイアウトを望んでいるためmasterSplitContainer.Panel1、 の領域全体を占有しmasterSplitContainerます。
  2. ユーザーはデュアル ペイン レイアウトを有効にしますが、一番下のコンテナーの Panel 2 を削除します。
  3. ユーザーは 3 つのパネルすべてを必要としています。

私のテスト ビルドが示すように、SplitContainers のみを使用したように見えたので、2 番目の SplitContainer (子) は意図したポイントを取得し、この配置に完全に満足しており、問題はまったくありませんでした。ただし、単一ペイン ビューを有効にする設定をテストすると、次の結果が得られます。

DataGridView の問題 1

masterSplitContainer.Panel2次のコードで無効になります。

この場合、事前定義された境界を保持するのではなく、DataGridView が masterSplitContainer の完全な操作領域を想定するようにします。これは、パーツを追加したときにパネル スプリッターがあったという理由だけで設定されたものです。

削除のプロセスでは、子 SplitContainer (つまり、bottomSplitContainer.Panel1) に配置された 2 番目の DataGridView で同じことが発生します。これも、その囲いの領域に従いません。

これまでに少し読んだことがありますが、これはアンカーの問題である可能性がありますが、.NET と Windows フォームの経験が非常に限られているため、これには少し手を握ったり指さしたりする必要があるかもしれません明らかな間違いから。

また、実際のコード参照がさらに必要な場合は、リクエストに応じてフォーム クラスを投稿させていただきます。

0 投票する
2 に答える
911 参照

c# - 前のコントロールにフォーカスを設定する

スプリッター パネルの制御が失われるという問題があり、元に戻す必要があります。

私のアプリケーションは SplitContainer を使用しています。コントロールがスプリッターの panel2 にデータをロードすると、フォーカスが panel1 に移動します。

tab と shift+tab はパネルとスプリッターの両方で機能する必要があるため、両方のパネルで tabStop = true であるコントロールがあります。

元に戻すには、Panel2 コントロールの GotFocus に Control オブジェクトを追加し、これを panel1 の _enter で使用して panel2 にフォーカスを戻します。ただし、このコントロール オブジェクトをリセットする必要があります。コントロールを戻すと GotFocus が再度呼び出されるため、 panel2 の _leave では実行できません。