更新 : 2007 年 11 月
名前空間 :
System.Windows.Forms アセンブリ :
System.Windows.Forms (System.Windows.Forms.dll 内)
<BrowsableAttribute(False)> _
Public Event LostFocus As EventHandler
Dim instance As Control
Dim handler As EventHandler
AddHandler instance.LostFocus, handler
[BrowsableAttribute(false)]
public event EventHandler LostFocus
[BrowsableAttribute(false)]
public:
event EventHandler^ LostFocus {
void add (EventHandler^ value);
void remove (EventHandler^ value);
}
/** @event */
/** @attribute BrowsableAttribute(false) */
public void add_LostFocus (EventHandler value)
/** @event */
/** @attribute BrowsableAttribute(false) */
public void remove_LostFocus (EventHandler value)
キーボード (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 ライブラリ (http://msdn.microsoft.com/library/ja.) にあるプラットフォーム SDK ドキュメントの「Keyboard Input Reference」で WM_SETFOCUS および WM_KILLFOCUS のトピックを参照してください。 |
注意 : |
|---|
LostFocus イベント ハンドラの中からフォーカスを設定しないでください。フォーカスを設定すると、アプリケーションやオペレーティング システムが応答を停止することがあります。LostFocus イベントの詳細については、MSDN ライブラリ (http://msdn.microsoft.com/library/ja.) にあるプラットフォーム SDK ドキュメントの「Keyboard Input Reference」で WM_KILLFOCUS、および「Messages and Message Queues」で Message Deadlocks を参照してください。 |
イベント処理の詳細については、「イベントの利用」を参照してください。
TextBox1 のテキストを検証する方法を次のコード例に示します。また、FileDialog..::.InitialDirectory プロパティを TextBox1 のテキストに設定して、LostFocus イベントを処理する方法も示します。このコード例では、ErrorProvider..::.GetError メソッドを使用して、ファイル ダイアログ ボックスを開く前にエラーがあるかどうかを調べます。この例を実行するには、TextBox1 という名前の TextBox、OpenFileDialog1 という名前の OpenFileDialog、Button1 という名前の Button、および 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
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();
}
}
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 = gcnew System::IO::DirectoryInfo( TextBox1->Text );
directory->GetFiles();
ErrorProvider1->SetError( TextBox1, "" );
}
catch ( System::ArgumentException^ )
{
ErrorProvider1->SetError( TextBox1, "Please enter a directory" );
}
catch ( System::IO::DirectoryNotFoundException^ )
{
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.
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.
void Button1_Click( System::Object^ sender, System::EventArgs^ e )
{
//If there is no error, then open the dialog box.
if ( ErrorProvider1->GetError( TextBox1 )->Equals( "" ) )
{
::DialogResult dialogResult = OpenFileDialog1->ShowDialog();
}
}
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.get_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.");
}
} //textBox1_Validating
// 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.set_InitialDirectory(textBox1.get_Text());
} //textBox1_LostFocus
// This method demonstrates using the ErrorProvider.GetError method
// to check for an error before opening the dialog box.
private void button1_Click(Object sender, System.EventArgs e)
{
//If there is no error, then open the dialog box.
if (errorProvider1.GetError(textBox1).Equals("")) {
DialogResult dialogResult = openFileDialog1.ShowDialog();
}
} //button1_Click
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
.NET Framework
サポート対象 : 3.5、3.0、2.0、1.1、1.0
.NET Compact Framework
サポート対象 : 3.5、2.0、1.0
参照