8

MenuStripの色とグラデーションをカスタマイズする方法について他のいくつかの記事を読みました。

私がやりたいのは、グラデーションを削除して、MenuStripがフォームの残りの部分と同じ色になるようにすることです。これは、私にとっては、新しいWinFormsプロジェクトを作成するときに使用されるデフォルト設定です。「システム」に変更してみRenderModeましたが、ある程度は機能しますが、ビルドして実行すると、MenuStripの長さの白い線が残ります。絵を描いたり絵を描いたりする必要がありますか?または、もっと簡単な方法はありますか?

4

2 に答える 2

9

これは基本的にこれと同じ質問です

答えはこのMicrosoftのバグ投稿を参照しています

2005年からずっと問題になっているようです。コメントによると、これは修正されないMSバグであるとのことですが、独自のレンダラーを実装することを含む回避策があります。

public class MySR : ToolStripSystemRenderer
{
    public MySR()
    {
    }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //base.OnRenderToolStripBorder(e);
    }
}

次に、メニューストリップのレンダラーを実装したばかりのレンダラーに設定するだけです。

menustrip1.Renderer = new MySR();

試してみたところ、問題なく動作しているようです。

于 2011-02-16T03:45:04.647 に答える
3

私はYettiに同意しますが、境界線を維持したい場合は、これを試すことができます。ブラシを背景色に置き換えます

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
  base.OnRenderToolStripBorder(e);
  e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}
于 2011-11-07T20:29:23.890 に答える