ContainerControl.AutoValidate プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
フォーカスが変更されたときに、このコンテナー内のコントロールを自動的に検証するかどうかを示す値を取得または設定します。
public:
virtual property System::Windows::Forms::AutoValidate AutoValidate { System::Windows::Forms::AutoValidate get(); void set(System::Windows::Forms::AutoValidate value); };
[System.ComponentModel.Browsable(false)]
public virtual System.Windows.Forms.AutoValidate AutoValidate { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.AutoValidate : System.Windows.Forms.AutoValidate with get, set
Public Overridable Property AutoValidate As AutoValidate
プロパティ値
含まれているコントロールがフォーカスの変更時に暗黙的に検証されるかどうかを示す AutoValidate 列挙値。 既定値は Inherit です。
- 属性
例外
無効な AutoValidate 値は、このプロパティの設定に使用されました。
例
次のコード例では、フォームとそれに含まれるすべてのコントロールの暗黙的な検証をオフにし、代わりにマウス ボタンがクリックされたときに、フォームのすべての子の検証を手動で実行します。
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Text;
namespace TestValidation
{
class Form1 : Form
{
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
private TextBox firstNameBox, lastNameBox;
private Button validateButton;
private FlowLayoutPanel flowLayout1;
private Form1()
{
this.Load += new EventHandler(Form1_Load);
}
void Form1_Load(object sender, EventArgs e)
{
// Turn off validation when a control loses focus. This will be inherited by child
// controls on the form, enabling us to validate the entire form when the
// button is clicked instead of one control at a time.
this.AutoValidate = AutoValidate.Disable;
flowLayout1 = new FlowLayoutPanel();
flowLayout1.Dock = DockStyle.Fill;
flowLayout1.Name = "flowLayout1";
firstNameBox = new TextBox();
firstNameBox.Name = "firstNameBox";
firstNameBox.Size = new Size(75, firstNameBox.Size.Height);
firstNameBox.CausesValidation = true;
firstNameBox.Validating += new System.ComponentModel.CancelEventHandler(firstNameBox_Validating);
flowLayout1.Controls.Add(firstNameBox);
lastNameBox = new TextBox();
lastNameBox.Name = "lastNameBox";
lastNameBox.Size = new Size(75, lastNameBox.Size.Height);
lastNameBox.CausesValidation = true;
lastNameBox.Validating += new System.ComponentModel.CancelEventHandler(lastNameBox_Validating);
flowLayout1.Controls.Add(lastNameBox);
validateButton = new Button();
validateButton.Text = "Validate";
// validateButton.Location = new Point(170, 10);
validateButton.Size = new Size(75, validateButton.Size.Height);
validateButton.Click += new EventHandler(validateButton_Click);
flowLayout1.Controls.Add(validateButton);
this.Controls.Add(flowLayout1);
this.Text = "Test Validation";
}
void firstNameBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (firstNameBox.Text.Length == 0)
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}
void lastNameBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = false;
}
void validateButton_Click(object sender, EventArgs e)
{
if (this.ValidateChildren())
{
MessageBox.Show("Validation succeeded!");
}
else
{
MessageBox.Show("Validation failed.");
}
}
}
}
Imports System.Drawing
Imports System.Windows.Forms
Public Class Form1
Inherits Form
'Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
Main(System.Environment.GetCommandLineArgs())
End Sub
Private Overloads Shared Sub Main(ByVal args() As String)
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
Private WithEvents FirstNameBox, LastNameBox As TextBox
Private WithEvents ValidateButton As Button
Private FlowLayout1 As FlowLayoutPanel
Private Sub New()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
' Turn off validation when a control loses focus. This will be inherited by child
' controls on the form, enabling us to validate the entire form when the
' button is clicked instead of one control at a time.
Me.AutoValidate = System.Windows.Forms.AutoValidate.Disable
FlowLayout1 = New FlowLayoutPanel()
FlowLayout1.Dock = DockStyle.Fill
FirstNameBox = New TextBox()
FirstNameBox.Name = "FirstNameBox"
FirstNameBox.Location = New Point(10, 10)
FirstNameBox.Size = New Size(75, FirstNameBox.Size.Height)
FirstNameBox.CausesValidation = True
FlowLayout1.Controls.Add(FirstNameBox)
LastNameBox = New TextBox()
LastNameBox.Name = "LastNameBox"
LastNameBox.Location = New Point(90, 10)
LastNameBox.Size = New Size(75, LastNameBox.Size.Height)
LastNameBox.CausesValidation = True
FlowLayout1.Controls.Add(LastNameBox)
ValidateButton = New Button()
ValidateButton.Text = "Validate"
ValidateButton.Location = New Point(170, 10)
ValidateButton.Size = New Size(75, ValidateButton.Size.Height)
FlowLayout1.Controls.Add(ValidateButton)
Me.Text = "Test Validation"
Me.Controls.Add(FlowLayout1)
End Sub
Private Sub FirstNameBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles FirstNameBox.Validating
If FirstNameBox.Text.Length = 0 Then
e.Cancel = True
Else
e.Cancel = False
End If
End Sub
Private Sub LastNameBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles LastNameBox.Validating
e.Cancel = False
End Sub
Private Sub ValidateButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ValidateButton.Click
If ValidateChildren() Then
MessageBox.Show("Validation succeeded!")
Else
MessageBox.Show("Validation failed.")
End If
End Sub
End Class
注釈
AutoValidateの既定値はコントロールごとに異なります。 暗黙的な検証の詳細については、「User Input Validation in Windows フォーム」を参照してください。
このプロパティを新しい値に設定すると、 AutoValidateChanged イベントが発生します。