0

コントロールがフォーム表示領域を超えたときに StatusStrip をスクロールする方法はありますか? 私の StatusStrip は、たくさんのラベル (ボタンとして機能する) を持つタスクバーとして機能します。ラベルが多すぎると、画面の境界からはみ出す可能性があります。

4

1 に答える 1

4

これまで使用した Windows アプリケーションで、スクロール ステータス バー コントロールを見たことがありません。

まったく関係のないことだと思うかもしれませんが、理由があって言及します。プラットフォームの慣例と一致するアプリケーションを設計することには大きな利点があり、したがってユーザーの期待に応えます。これらのアプリケーションは、はるかに簡単に作成でき (ルールを破ることは、ルールに従うよりも常に困難です)、ユーザーが理解して使用するのもはるかに簡単です。

スクロールバーがあったとしても、ユーザーはステータス バー コントロールにスクロールバーが表示されることを期待していないため、スクロールバーを見つけて使用しない可能性が非常に高くなります。私は確かにそうではないでしょう。見つけたいと思っていた情報を探しても、見つけられず、イライラしてしまいます。ほとんどのユーザーと同様に、スクロールできないものをスクロールする必要があることを理解するためにドキュメントを読む必要はありません。あなたのアプリの UI が悪いと結論付けて、それで終わりです。

そして実際、プログラマーとしてのあなたや私が典型的な[愚かな]ユーザーについてどう思うかもしれませんが、典型的な愚かなユーザーとしての私はまったく正しいでしょう! あなたのアプリケーションは非標準で使いにくいため、UI が適切ではありません。これは、多くのプログラマーが理解も評価もしていないことですが、非常に重要です。

したがって、アプリケーションの UI 設計を再検討することを強くお勧めします。主な焦点 (および一般的な優れた設計) は、ステータス バーだけでなく、重要な情報が複数の場所に表示またはアクセスできるようにすることです。もう 1 つのオプションは、ステータス バーに表示する情報を少なくすることです。Windows エクスプローラーと同じように、使用可能な画面領域が縮小すると、重要度の低い情報を自動的に非表示にし、必要なスペースができたら、より多くの情報を表示する必要があります。エクスプローラー ウィンドウを非常に小さくすると、ステータス バーに最低限必要なものだけが表示されます。

しかし、このアドバイスをすべて無視して、すでに決めたことをやり過ごすことに決めた場合は、読み続けてください...StatusStripコントロールは から継承されます。ScrollableControlつまり、 や などのプロパティがAutoScrollありHScrollます。しかし、ドキュメントは、そのようなプロパティが次のとおりであることを示しています。

インフラストラクチャー。このプロパティは、このクラスには関係ありません。

つまり、StatusStripコントロールではサポートされていません。独自のスクロール コードを継承して記述できるかもしれませんがStatusStrip、それは大変な作業のように思えます。

より簡単な解決策は、おそらくPanelフォームの下部にコントロールをドッキングし、StatusStripその中にコントロールを配置することPanelです。AutoScrollコンテナー コントロールのプロパティを設定していることを確認してください。コンテナーPanelコントロールは自動的に展開され (スクロールバーを使用)、StatusStripコントロール全体が表示されます。

于 2011-12-18T04:31:50.157 に答える