44 lines
994 B
C#
44 lines
994 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Windows.Forms;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace TestWndProc
|
|
{
|
|
public partial class MyTextBox : TextBox
|
|
{
|
|
public event EventHandler SelectionChange;
|
|
public MyTextBox()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
public MyTextBox(IContainer container)
|
|
{
|
|
container.Add(this);
|
|
InitializeComponent();
|
|
}
|
|
private void OnSelectionChange()
|
|
{
|
|
if (SelectionChange != null)
|
|
SelectionChange(this, new EventArgs());
|
|
}
|
|
const int WM_IME_NOTIFY = 0x282;
|
|
const int IMN_SETCOMPOSITIONWINDOW = 11;
|
|
/// <summary>
|
|
/// Allow SelectionChange
|
|
/// </summary>
|
|
/// <param name="m"></param>
|
|
protected override void WndProc(ref Message m)
|
|
{
|
|
// Watch for SelectionChange Message
|
|
if (m.Msg == WM_IME_NOTIFY && m.WParam.ToInt32() == IMN_SETCOMPOSITIONWINDOW)
|
|
OnSelectionChange();
|
|
base.WndProc(ref m);
|
|
}
|
|
}
|
|
}
|