ドロップダウンメニューのプロパティ
-
06-07-2019 - |
質問
Visual Studio 2008で簡単なドロップダウンでイメージストリップの色を変更できるかどうか、またどのように変更できるかを知っていますか?現在、ドロップダウンメニューには、独自のアイテムのコレクションがあり、ドロップダウンメニューのそれぞれの横には画像ストリップがあり、現在は灰色から明るいグラデーションまでのグラデーションが付いています。この色を変更したり、完全に削除したりできるかどうかを知りたいですか? よろしくお願いします、クレイグ。
解決
WPFについては知らないので、winformsについて質問していると仮定します。
イメージストリップを非表示にするだけの場合は、 ShowImageMargin
および ShowCheckMargin
プロパティをfalseに設定します。ただし、メニュー項目の画像を表示することはできません。
少なくともXPでは、を設定する ToolStripRenderMode.System
へのドロップダウンの RenderMode
プロパティは、画像の余白の装飾のないメニューを提供します。ただし、アプリケーションの視覚的なスタイルと一致しない場合があります。
各メニュー項目に BackColor
を設定すると、画像の余白が見えなくなります。
ドロップダウンの視覚スタイルを変更せずにイメージマージンを非表示にするには、空の OnRenderImageMargin
関数は次のようになります。
class MyRenderer : ToolStripProfessionalRenderer
{
protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
{
// do nothing
}
}
そしてドロップダウンの Renderer
プロパティを新しいレンダラークラスのインスタンスに追加します。レンダラーの ColorTable
を変更することで、同様の方法で画像の余白の色を変更できます。
しかし、それらのいずれかを行う前に、自問してください:
- インターフェースをあまり馴染みのないものに変更することで、ユーザビリティのメリットはありますか?
- 存在する場合、このフィードバックは、ユーザーのフィードバックに迅速に対応できるようにコードをシンプルに保つ利点よりも優れていますか?
最初の質問に対する答えは通常「いいえ」です。
他のヒント
ToolStripRendererのサブクラスを作成し、適切なレンダリングメソッドをオーバーライドすることにより、この動作を実現できます。例については、MSDNを参照してください。
WinFormsソリューションを探していると思います。 WPF / Xamlの場合、ソリューションはもちろん完全に異なり、コントロールテンプレートを変更することで実現できます。