Как обновить привязку к источнику данных WindowsForms.TextBox.DataSource .. mmm .. для каждого события TextChanged (во время ввода)?
Это полезно, если вы хотите обновить некоторые "счетчики" или "статусы ошибок" при вводе.
Иногда я использовал этот код, но он выглядит слишком сложным. Может быть, есть другое, более простое решение?
class FlashTextBox:TextBox
{
protected override void OnTextChanged(EventArgs e)
{
Binding binding = this.DataBindings["Text"];
if (binding!=null)
{
PropertyManager propertyManager =
binding.BindingManagerBase as PropertyManager;
if (propertyManager!=null)
{
PropertyInfo pinfo =
binding.DataSource.GetType()
.GetProperty(binding.BindingMemberInfo.BindingField,
BindingFlags.Instance | BindingFlags.Public);
pinfo.SetValue(binding.DataSource, this.Text, null);
}
}
if (isAutoScrollVisible)
{
ChangeScrollVisibility();
}
base.OnTextChanged (e);
}
const int WM_KEYDOWN = 0x0100;
public override bool PreProcessMessage(ref System.Windows.Forms.Message msg)
{
if(msg.Msg == WM_KEYDOWN)
{
switch((Int32)msg.WParam)
{
case (int)Keys.Enter :
if (EnterPressed!=null)
EnterPressed(this,EventArgs.Empty);
break;
}
}
return base.PreProcessMessage(ref msg);
}
}