23

ラジオ ボタンとして使用される ToolStripButton があります。オンにすると、ボタンが青い枠で囲まれますが、背景色はありません。ボタンがチェックされていることはユーザーにとって十分に明確ではないため、背景色を変更してチェック状態をより見やすくしたいと考えています。

Checked プロパティが true に設定されている場合、ハイライトの色を変更するにはどうすればよいですか?

コード スニペットを次に示します。

this.hideInactiveVehiclesToolstripButton.CheckOnClick = true;
this.hideInactiveVehiclesToolstripButton.ForeColor = System.Drawing.Color.Blue;
this.hideInactiveVehiclesToolstripButton.AutoSize = false;
this.hideInactiveVehiclesToolstripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.hideInactiveVehiclesToolstripButton.Image = global::ClientUI.Properties.Resources.toggleInactive;
this.hideInactiveVehiclesToolstripButton.ImageTransparentColor = System.Drawing.Color.Black;
this.hideInactiveVehiclesToolstripButton.Name = "hideInactiveVehiclesToolstripButton";
this.hideInactiveVehiclesToolstripButton.Size = new System.Drawing.Size(48, 48);
this.hideInactiveVehiclesToolstripButton.Text = "Hide Inactive Vehicles";
this.hideInactiveVehiclesToolstripButton.Click +=new System.EventHandler(this.hideInactiveVehiclesToolstripButton_Click);
4

3 に答える 3

47

独自のツールストリップレンダラーを提供して、ボタンの背景を希望どおりに描画できます。このサンプルコードは、チェックされたボタンに非常に目に見える黒い背景を与えます。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        toolStrip1.Renderer = new MyRenderer();
    }
    private class MyRenderer : ToolStripProfessionalRenderer {
        protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) {
            var btn = e.Item as ToolStripButton;
            if (btn != null && btn.CheckOnClick && btn.Checked) {
                Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);
                e.Graphics.FillRectangle(Brushes.Black, bounds);
            }
            else base.OnRenderButtonBackground(e);
        }
    }
}
于 2010-01-19T21:44:55.180 に答える
0

ここにVB.netコードがあります

Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
      toolStrip1.Renderer = New MyRenderer()
   End Sub

   Public Class MyRenderer
      Inherits ToolStripProfessionalRenderer

      Protected Overrides Sub OnRenderButtonBackground(ByVal e As ToolStripItemRenderEventArgs)
          Dim btn As ToolStripButton = e.Item
          If (Not IsDBNull(btn) And btn.CheckOnClick And btn.Checked) Then
              Dim bounds As Rectangle = New Rectangle(Point.Empty, e.Item.Size)
              e.Graphics.FillRectangle(Brushes.Black, bounds)
          End If
      End Sub
End Class
于 2020-03-29T15:29:47.967 に答える