DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

ツールバーのボタンを押された(へこんだ)見た目にする

注意:ここでは、ToolStripコントロールを使用した方法を紹介しています。ToolStripコントロールは、.NET Framework 2.0以降でのみ使用できます。

ツールバーのボタンは通常のボタンとしての機能の他に、チェックボックスのように、チェック状態を表すこともできます。チェック状態の時はボタンが押された(へこんだ)見た目になり、チェックされていない状態の時は通常の見た目になります。

以下の画像では、左のボタンが通常の状態で、右のボタンがチェックされた状態です。

押された状態のToolStripButton

ツールバーとしてToolStripコントロールを使用し、ボタンとしてToolStripButtonを使用している時、ボタンを押された見た目にするには、ToolStripButton.CheckStateプロパティをCheckState.Checkedにします。また、普通の見た目に戻すには、ToolStripButton.CheckStateプロパティをCheckState.Uncheckedにします。

補足:ToolStripButton.CheckStateプロパティには、中間状態を表す「CheckState.Indeterminate」もありますが、この時ボタンは押された見た目になります。

または、ToolStripButton.CheckStateプロパティの代わりに、ToolStripButton.Checkedプロパティを使用しても同じことができます。ToolStripButton.CheckedプロパティをTrueにするとボタンは押された見た目になり、Falseにすると元に戻ります。

補足:CheckedプロパティとCheckStateプロパティは連動します。CheckedプロパティをTrueにするとCheckStateプロパティはCheckedになり、CheckedプロパティをFalseにするとCheckStateプロパティはUncheckedになります。

以下の例では、ToolStripButton1がクリックされる度にチェック状態を入れ替えています。なおToolStripButton.CheckOnClickプロパティをTrueにすれば、以下のようなコードを書かなくても自動的に状態が変わるようになります。

VB.NET
コードを隠すコードを選択
'ToolStripButton1のClickイベントハンドラ
Private Sub ToolStripButton1_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles ToolStripButton1.Click
    Dim tsb As ToolStripButton = DirectCast(sender, ToolStripButton)
    'チェック状態を反転させる
    tsb.Checked = Not tsb.Checked
End Sub
C#
コードを隠すコードを選択
//ToolStripButton1のClickイベントハンドラ
private void ToolStripButton1_Click(object sender, EventArgs e)
{
    ToolStripButton tsb = (ToolStripButton)sender;
    //チェック状態を反転させる
    tsb.Checked = !tsb.Checked;
}

ここで紹介した以外の、グループ内で1項目しかチェックマークを付けられないようにする方法や、チェック状態が変化したことを知る方法などは、「メニューにV字や黒丸のチェックマークを付ける」を参考にしてください。そちらはToolStripMenuItemクラスに関する記事ですが、ToolStripButtonクラスでも同様です。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。