いつもValidate系のイベントがどのタイミングで発生するのかを忘れるのでメモメモ。
以下、サンプルです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.Drawing; using System.Windows.Forms; using System.Text; namespace Gsf.Demo{ public class DemoForm : Form{ TextBox txt1; Button btn1; StringBuilder _sb = new StringBuilder(); public DemoForm(){ InitializeComponent(); } protected void InitializeComponent(){ SuspendLayout(); Text = "Event Research Sample."; Width = 250; Height = 100; txt1 = new TextBox{ Width = 100, Location = new Point(10, 10) }; btn1 = new Button{ Width = 100, Text = "Show Event Log", Location = new Point(120, 10) }; txt1.TextChanged += (s, e) => { _sb.AppendLine("TextChanged Event."); }; txt1.Validating += (s, e) => { _sb.AppendLine("Validating Event."); }; txt1.Validated += (s, e) => { _sb.AppendLine("Validated Event."); }; txt1.Enter += (s, e) => { _sb.AppendLine("Enter Event."); }; txt1.Leave += (s, e) => { _sb.AppendLine("Leave Event."); }; txt1.GotFocus += (s, e) => { _sb.AppendLine("GotFocus Event."); }; txt1.LostFocus += (s, e) => { _sb.AppendLine("LostFocus Event."); }; btn1.Click += (s, e) => { MessageBox.Show(_sb.ToString()); Console.WriteLine(_sb.ToString()); }; Controls.AddRange(new Control[]{ txt1, btn1 }); ResumeLayout(); } } class EntryPoint{ [STAThread] static void Main(){ Application.EnableVisualStyles(); Application.Run(new DemoForm()); } } }
上記サンプルを実行すると、以下の順序で表示されます。
Enter Event GotFocus Event TextChanged Event Leave Event Validating Event Validated Event LostFocus Event
補足:てか、MSDNに書いてあるの忘れてた・・・orz
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.validated.aspx
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場