如何引发一个事件,该事件将为我的文本框控件调用 OnTextChanged 重写方法?
编辑:
private void thebox_TextChanged(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)
当您发现需要尝试直接调用事件时,通常表明您正在尝试将大量逻辑填充到事件方法或事件处理程序中。调用 OnTextChanged 或直接调用事件处理程序不是一个好主意。事件被设计为基于用户交互触发,而不是在您想查看其副作用时作为常规方法调用。事实上,从您的事件方法和所有事件处理程序中移除所有重要的副作用并将它们移动到单独的方法中应该是一个设计目标。
您最好的选择是将 OnTextChanged 方法中当前发生的逻辑放在另一个方法中,并正确命名。方法名称“OnTextChanged”意味着它除了通知您文本已更改之外什么都不做。如果您需要做更多工作,请将其放入自己的方法中(例如,UpdateRelatedControls 或任何可能的方法)并从您的 OnTextChanged 事件中调用此新方法。然后,您可以公开此新方法并随时调用它。
textchanged
在事件中使用逗号将数字格式化为十进制格式。这是c#中的代码
private void textBox8_TextChanged(object sender, EventArgs e)
{
//Remove previous formatting, or the decimal check will fail
string value = String.Format("{0:0,0.00}", double.Parse(textBox8.Text));
// "12,345.87"
decimal ul;
//Check we are indeed handling a number
if (decimal.TryParse(value, out ul))
{
//Unsub the event so we don't enter a loop
textBox8.TextChanged -= textBox8_TextChanged;
//Format the text as currency
textBox8.Text = value.ToString();
textBox8.TextChanged += textBox8_TextChanged;
}
}
从后面的代码中引发该事件的唯一方法是更改 TextBox 的 Text 属性。
请参阅http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx