質問

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の場合、ソリューションはもちろん完全に異なり、コントロールテンプレートを変更することで実現できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top