It works for me
Are you sure you're handling the Validated event?
(the Validating event will also work)
Are you using the correct instance when you're calling
Validate. It must be the the form that contains your textbox
I've included a sample for you at the end of this post
/claes
bob said:
Thanks for suggestion, but it didn't work. According to help
ContainerControl.Validate should raise validate for each child control
that needs to be validated. I clicked on the text field, then clicked
on the menu where I have following code:
this.Validate();
Nothing happened... I still don't understand why Leave event occur
only within ContainerControl and doesn't get propagated up to the
form/window level.
Thanks,
Bob
****************** Sample ******************
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace ValidateTest
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(80, 56);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 0;
this.textBox1.Text = "";
this.textBox1.Validating += new
System.ComponentModel.CancelEventHandler(this.textBox1_Validating);
this.textBox1.Validated += new
System.EventHandler(this.textBox1_Validated);
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(80, 96);
this.textBox2.Name = "textBox2";
this.textBox2.TabIndex = 1;
this.textBox2.Text = "";
this.textBox2.Validating += new
System.ComponentModel.CancelEventHandler(this.textBox2_Validating);
this.textBox2.Validated += new
System.EventHandler(this.textBox2_Validated);
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2});
this.menuItem1.Text = "Menu 1";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "Menu Item 1";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void textBox1_Validated(object sender, System.EventArgs e)
{
System.Diagnostics.Debug.WriteLine("textBox1_Validated");
}
private void textBox1_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
System.Diagnostics.Debug.WriteLine("textBox1_Validating");
}
private void textBox2_Validated(object sender, System.EventArgs e)
{
System.Diagnostics.Debug.WriteLine("textBox2_Validated");
}
private void textBox2_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
System.Diagnostics.Debug.WriteLine("textBox2_Validating");
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
this.Validate();
}
}
}