1

私はToolStripDropDownButtonを使用しており、 Forecolorで、Backcolor透明です。「青いフォーカス」が表示されているため、マウスがコントロールの上にある場合、「ToolStripDropDownButton」のテキストは読み取れません。

マウスがコントロールの上にあるときにToolStripDropDownButtonの「青いフォーカス」を削除/削除するにはどうすればよいですか?下の写真のように見えます。ありがとうございました。

ここに画像の説明を入力してください これは、digEmAll画像のような出力を生成します。

using System;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();

           toolStrip1.BackColor = Color.Transparent;
           toolStrip1.GripStyle = ToolStripGripStyle.Visible;
           toolStrip1.Renderer = new MyRenderer();
       }

       private class MyRenderer : ToolStripSystemRenderer
       {
          protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
          {
              e.ArrowColor = Color.White;
              base.OnRenderArrow(e);
          }

          protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
          {
             // remove white line bellow button (http://connect.microsoft.com/VisualStudio/feedback/details/92862/toolstrip-always-draws-a-border-on-the-bottom-with-rendermode-system-and-docked-left-or-right)
             //base.OnRenderToolStripBorder(e);
          }
       }
    }
}
4

2 に答える 2

3

ToolStripのRendererプロパティを再割り当てして、独自のレンダラーを作成できます。ただし、OnRenderSplitButtonBackground()をオーバーライドするのは非常に面倒ですが、分割ボタンにはペイントする必要のある多くのドゥーダがあり、ストックペインタメソッドはプライベートです。あなたの場合のより簡単なアプローチは、カラーテーブルをオーバーライドすることです。次のようにします。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        toolStrip1.Renderer = new MyRenderer();
    }

    private class MyRenderer : ToolStripProfessionalRenderer {
        public MyRenderer() : base(new MyColors()) {}
    }

    private class MyColors : ProfessionalColorTable {
        public override Color ButtonSelectedGradientBegin {
            get { return Color.Black; }
        }
        public override Color ButtonSelectedGradientMiddle {
            get { return Color.Black; }
        }
        public override Color ButtonSelectedGradientEnd {
            get { return Color.Black; }
        }
    }
}
于 2012-04-07T12:32:06.737 に答える
1

のRendererプロパティを変更できますToolStrip。たとえばToolStripSystemRenderer、デフォルトの代わりに使用しますToolStripProfessionalRenderer

this.toolStrip.Renderer = new ToolStripSystemRenderer();

次の結果が得られます。

ここに画像の説明を入力してください

より大幅にカスタマイズしたい場合は、ToolStripSystemRendererを拡張できます。たとえば、次のコードを使用すると、矢印の色を変更できます。

class MyRenderer : ToolStripSystemRenderer
{
    protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
    {
        e.ArrowColor = Color.White;
        base.OnRenderArrow(e);
    }
}

結果:

ここに画像の説明を入力してください

于 2012-04-07T12:17:01.093 に答える