首先,我们需要覆盖一个自定义控件,以便在该CaseingTxtBox离开时生成文本框文本Titlecase,第二次我们在表单中使用该离开事件来调用某个方法。这可能吗?
我们尝试了以下代码,但每次CaseingTxtBox
的{{1}}事件都会接到来电,但没有Onleave
我制作了一个自定义控件,为我的文本框添加了正确的大小写并继承自firstNameTextBox_Leave()
,我们使用文本框的TextBox
事件来创建自定义文本框的文本标题大小写。
Leave
我们在表单中使用public class CaseingTxtBox : TextBox
{
protected override void OnLeave(EventArgs e)
{
Text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Text.ToLower());
//first call this event for make text titlecase
}
}
控件来使文本正确,并且效果非常好。我们还使用该控件的CaseingTxtBox
事件来调用方法,但不调用该方法。
Leave
答案 0 :(得分:2)
您正在覆盖该方法,但您没有在处理程序中调用base.OnLeave(e)
,因此永远不会触发事件。
documentation对此很清楚:
对继承人的说明:
在派生类中重写OnLeave时,请务必调用基类的OnLeave方法,以便已注册的委托接收事件。
所以你需要覆盖这样的方法
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
Text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Text.ToLower());
}
这会导致被覆盖的OnLeave
方法和与Leave
相关联的任何可能事件被调用。