/// <summary> /// Windowsメッセージを処理します。 /// </summary> /// <param name="m">処理対象の<see cref="System.Windows.Forms.Message"/></param> protected override void WndProc(ref Message m) { switch (m.Msg) { case WindowMessages.WM_PAINT: if (!DesignMode && !ContainsFocus && !ReadOnly && Enabled && Text.IsEmpty()) this.DrawWaterMark(Font, WaterMark, WaterMarkColor, new Point(1, 1)); break; case WindowMessages.WM_KEYDOWN: if (m.WParam.ToInt32() == (int)Keys.Delete) { TextChangingEventArgs e1 = new TextChangingEventArgs(this.CreateNewText(string.Empty, true)); this.OnTextChanging(e1); if (e1.Cancel) { m.Result = new IntPtr(1); // true return; } } break; case WindowMessages.WM_CHAR: TextChangingEventArgs e2 = new TextChangingEventArgs(CreateNewText(Convert.ToString((char)(m.WParam.ToInt32())))); this.OnTextChanging(e2); if (e2.Cancel) return; break; case WindowMessages.WM_PASTE: string clipText = Clipboard.GetDataObject().GetData(DataFormats.Text) as string; if (clipText != null) { TextChangingEventArgs e3 = new TextChangingEventArgs(this.CreateNewText(clipText)); this.OnTextChanging(e3); if (e3.Cancel) return; } break; } base.WndProc(ref m); }
/// <summary> /// TextChangingを発生させます。 /// </summary> /// <param name="e">イベントデータを格納している<see cref="Ricordanza.WinFormsUI.Forms.TextChangingEventArg"/>。</param> protected virtual void OnTextChanging(TextChangingEventArgs e) { if (TextChanging != null) TextChanging(this, e); }