Skip Navigation Linksホーム > ライブラリ > コントロール > コントロールにフォーカスが設定されないようにする

コントロールにフォーカスが設定されないようにする

言語フィルタ:

概要

コントロールにフォーカスが設定されないようにする方法を紹介します。

対象コントロール

  • System.Windows.Forms.Control から派生しているクラス

解説

コントロールにフォーカスが設定されないようにするには、ControlStyles.Selectable スタイルを適用しないようにします。そのためには SetStyle メソッドを使用して ControlStyles.Selectable スタイルを False に設定します。

展開されたイメージ ControlStyles.Selectable スタイルを未適用状態にする - Visual Basic
コピーイメージ コードのコピー
Public Sub New()
    Me.SetStyle(ControlStyles.Selectable, False)
End Sub
展開されたイメージ ControlStyles.Selectable スタイルを未適用状態にする - C#
コピーイメージ コードのコピー
public NotSelectableButton() // コンストラクタ
{
    this.SetStyle(ControlStyles.Selectable, false);
}

ControlStyles.Selectable スタイルを未適用状態にしても、Focus メソッドや Select メソッド、またフォームなどのコンテナコントロールの ActiveControl プロパティに設定するとフォーカスが設定されてしまうようです。

ソースコード

Button コントロールにフォーカスが設定されないようにするサンプルを紹介します。

コンストラクタで ControlStyles.Selectable スタイルを未適用状態にしています。

フォーカスを設定できるかどうかを示す Selectable プロパティを追加しています。

展開されたイメージ Visual Basic
コピーイメージ コードのコピー
Imports System
Imports System.ComponentModel
Imports System.Windows.Forms

Namespace Extentions

    Public Class NotSelectableButton
        Inherits System.Windows.Forms.Button

        Public Sub New()
            Me.SetStyle(ControlStyles.Selectable, False)
        End Sub

        Private _Selectable As Boolean
        <Category("動作")> _
        <DefaultValue(False)> _
        <Description("コントロールにフォーカスが設定されるかどうかを示す値を取得または設定します。")> _
        Public Property Selectable() As Boolean
            Get
                Return Me._Selectable
            End Get
            Set(ByVal value As Boolean)
                Me._Selectable = value

                If Me._Selectable <> value Then
                    Me.SetStyle(ControlStyles.Selectable, value)
                End If
            End Set
        End Property

    End Class

End Namespace
展開されたイメージ C#
コピーイメージ コードのコピー
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace Extentions
{
    class NotSelectableButton : System.Windows.Forms.Button
    {
        public NotSelectableButton()
        {
            this.SetStyle(ControlStyles.Selectable, false);
        }

        private bool _Selectable;
        [Category("動作")]
        [DefaultValue(false)]
        [Description("コントロールにフォーカスが設定されるかどうかを示す値を取得または設定します。")]
        public bool Selectable
        {
            get { return this._Selectable; }
            set
            {
                this._Selectable = value;

                if (this._Selectable != value)
                {
                    this.SetStyle(ControlStyles.Selectable, value);
                }
            }
        }
    }
}