예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
 }