Control.LostFocus イベント
コントロールにフォーカスがなくなると発生します。
Public Event LostFocus As EventHandler
[C#]
public event EventHandler LostFocus;
[C++]
public: __event EventHandler* LostFocus;
[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。
イベント データ
イベント ハンドラが EventArgs 型の引数を受け取りました。
解説
キーボード (Tab、Shift+Tab など) を使用するか、 Select メソッドまたは SelectNextControl メソッドを呼び出すか、 ContainerControl.ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、次の順序でフォーカス イベントが発生します。
- Enter
- GotFocus
- Leave
- Validating
- Validated
- LostFocus
マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカス イベントは次の順序で発生します。
- Enter
- GotFocus
- LostFocus
- Leave
- Validating
- Validated
CausesValidation プロパティが false に設定されている場合、 Validating イベントおよび Validated イベントは発生しません。
Validating イベント デリゲートで CancelEventArgs オブジェクトの Cancel プロパティが true に設定されると、通常は Validating イベントの後に発生するすべてのイベントが発生しなくなります。
メモ GotFocus イベントおよび LostFocus イベントは、WM_KILLFOCUS Windows メッセージおよび WM_SETFOCUS Windows メッセージに結び付けられた、低水準のフォーカス イベントです。一般的に、 GotFocus イベントおよび LostFocus イベントは、 UICues を更新するときにだけ使用されます。 Activated イベントおよび Deactivate イベントを使用する Form クラス以外のすべてのコントロールに対して、 Enter イベントおよび Leave イベントを使用する必要があります。 GotFocus イベントおよび LostFocus イベントの詳細については、MSDN ライブラリにある『Platform SDK』ドキュメントの「Keyboard Input Reference」で、 WM_SETFOCUS および WM_KILLFOCUS のトピックを参照してください。
注意 LostFocus イベント ハンドラの中からフォーカスを設定しないでください。フォーカスを設定すると、アプリケーションやオペレーティング システムが応答を停止することがあります。 LostFocus イベントの詳細については、MSDN ライブラリの『Platform SDK』ドキュメントの「Keyboard Input Reference」で WM_KILLFOCUS 、および「Messages and Message Queues」で Message Deadlocks を参照してください。
イベント処理の詳細については、「 イベントの利用 」を参照してください。
使用例
[Visual Basic, C#] TextBox1 オブジェクトのテキストを検証する方法を次のコード例に示します。この例では、ファイル ダイアログの InitialDirectory プロパティを TextBox1 のテキストに設定して、テキスト ボックスの System.Drawing.Control.LostFocus イベントを処理する方法も示しています。このコード例では、ErrorProvider.GetError メソッドを使用して、ファイル ダイアログを開く前にエラーがあるかどうかを調べました。この例を実行するには、TextBox1 という名前の TextBox、OpenFileDialog1 という名前の OpenFileDialog、Button1 という名前のボタン、および ErrorProvider1 という名前の ErrorProvider が配置されているフォームに、次のコードを貼り付けます。
Private Sub TextBox1_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles TextBox1.Validating
' If nothing is entered,
' an ArgumentException is caught; if an invalid directory is entered,
' a DirectoryNotFoundException is caught. An appropriate error message
' is displayed in either case.
Try
Dim directory As New System.IO.DirectoryInfo(TextBox1.Text)
directory.GetFiles()
ErrorProvider1.SetError(TextBox1, "")
Catch ex1 As System.ArgumentException
ErrorProvider1.SetError(TextBox1, "Please enter a directory")
Catch ex2 As System.IO.DirectoryNotFoundException
ErrorProvider1.SetError(TextBox1, _
"The directory does not exist." & _
"Try again with a different directory.")
End Try
End Sub
' This method handles the LostFocus event for TextBox1 by setting the
' dialog's InitialDirectory property to the text in TextBox1.
Private Sub TextBox1_LostFocus(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles TextBox1.LostFocus
OpenFileDialog1.InitialDirectory = TextBox1.Text
End Sub
' This method demonstrates using the ErrorProvider.GetError method
' to check for an error before opening the dialog box.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'If there is no error, then open the dialog box.
If ErrorProvider1.GetError(TextBox1) = "" Then
Dim dialogResult As DialogResult = OpenFileDialog1.ShowDialog()
End If
End Sub
[C#]
private void TextBox1_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
// If nothing is entered,
// an ArgumentException is caught; if an invalid directory is entered,
// a DirectoryNotFoundException is caught. An appropriate error message
// is displayed in either case.
try
{
System.IO.DirectoryInfo directory =
new System.IO.DirectoryInfo(TextBox1.Text);
directory.GetFiles();
ErrorProvider1.SetError(TextBox1, "");
}
catch(System.ArgumentException ex1)
{
ErrorProvider1.SetError(TextBox1, "Please enter a directory");
}
catch(System.IO.DirectoryNotFoundException ex2)
{
ErrorProvider1.SetError(TextBox1, "The directory does not exist." +
"Try again with a different directory.");
}
}
// This method handles the LostFocus event for TextBox1 by setting the
// dialog's InitialDirectory property to the text in TextBox1.
private void TextBox1_LostFocus(object sender, System.EventArgs e)
{
OpenFileDialog1.InitialDirectory = TextBox1.Text;
}
// This method demonstrates using the ErrorProvider.GetError method
// to check for an error before opening the dialog box.
private void Button1_Click(System.Object sender, System.EventArgs e)
{
//If there is no error, then open the dialog box.
if (ErrorProvider1.GetError(TextBox1)=="")
{
DialogResult dialogResult = OpenFileDialog1.ShowDialog();
}
}
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
Control クラス | Control メンバ | System.Windows.Forms 名前空間 | OnLostFocus