言語フィルタ:
概要
コントロールにフォーカスが設定されないようにする方法を紹介します。
対象コントロール
- System.Windows.Forms.Control から派生しているクラス
解説
コントロールにフォーカスが設定されないようにするには、ControlStyles.Selectable スタイルを適用しないようにします。そのためには SetStyle メソッドを使用して ControlStyles.Selectable スタイルを False に設定します。
Public Sub New()
Me.SetStyle(ControlStyles.Selectable, False)
End Sub
public NotSelectableButton() // コンストラクタ
{
this.SetStyle(ControlStyles.Selectable, false);
}
ControlStyles.Selectable スタイルを未適用状態にしても、Focus メソッドや Select メソッド、またフォームなどのコンテナコントロールの ActiveControl プロパティに設定するとフォーカスが設定されてしまうようです。
ソースコード
Button コントロールにフォーカスが設定されないようにするサンプルを紹介します。
コンストラクタで ControlStyles.Selectable スタイルを未適用状態にしています。
フォーカスを設定できるかどうかを示す Selectable プロパティを追加しています。
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
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);
}
}
}
}
}