2

新しい ToolStrips を動的に追加する Windows フォーム ToolStripPanel があります。各 ToolStrip には、動的に追加する ToolStripItems (主に ToolStripButtons) があります。

各 ToolStrip にすべての ToolStripItem が表示される限り、すべての ToolStrip を 1 行に収めたいと思います。新しい ToolStripItem を ToolStrip に追加するとオーバーフローが発生する場合、行の最後にある ToolStrip を新しい行にジャンプさせたいと思います。オーバーフロー ボタンを表示したいのは、ToolStrip に項目が多すぎてフォームの幅に収まらない場合だけです。

ユーザーが手動で ToolStrip を移動しない限り、これをデフォルトの動作にしたいと考えています。ユーザーが ToolStrip を移動した場合、既存のオーバーフロー (ドロップダウンの選択肢があるオーバーフロー ボタンなど) の動作が発生するようにします。ツールバーを自分で配置すれば、ユーザーはこのデフォルトの Winforms オーバーフロー動作で問題ないと思います。

ユーザーが物を再配置した後に新しい動的ツールバーが追加された場合、新しいツールバーを一番下の行の最後の ToolStrip の右側に追加したいと思います。このツールバーは、ユーザーが手動で再配置するまで、更新されたオーバーフロー動作 (収まらない場合は新しい行を使用するなど) を持つ必要があります。

私は大きな成功を収めずにいくつかの研究を行いました:

簡単な解決策がありませんか?

更新:まだ良い解決策を探しています。LayoutCompleted ルートが可能のようです。ただし、問題は、複数回呼び出されることです。ToolStripItem がオーバーフロー エリアにあり、その直後にメイン エリアにあると表示されることがあるため、オーバーフローにあるかどうかを 1 回だけ確認するのは安全ではないようです。

4

2 に答える 2

2

1) ツールストリップにアイテムを追加する

2) ツールストリップの幅を、最後の行に残されたスペースの量と比較します。ToolStripPanel には、最後の行とその行にあるツールストリップを示す Rows[] プロパティがあります。それらの幅を合計し、パネルの幅から引きます。

3) Join メソッドを使用して新しいツールストリップをパネルに追加し、最後の行 (収まる場合) または 1 行上 (収まらない場合) を指定します。

于 2009-04-12T02:59:03.930 に答える
0
于 2009-03-04T15:30:35.117 に答える