GcNumber表示文字的问题
版本:InputMan for Winforms 7.0J控件:GcNumber
现象:
GcNumber的输入格式设为####0,表示格式设为#####
这样当该控件的Text为0时,获得光标表示出【0】,失去光标后表示为空。
但是,如果在该控件的Enter事件中将光标迁到了别的控件上,这时候该控件就会残留一个【0】。
怀疑是由于没有走控件的Leave事件,导致内部仍然认为是得到焦点的状态,所以按输入时的格式来表示了。
有没有办法解决此问题? 回复 1楼ghostlyt的帖子
你的怀疑是正确的。
解决方案是你在抢Focus给别人的时候,反射调用一下NotifyLeave
void gcNumber1_Enter(object sender, EventArgs e)
{
GcNumber gcNumber = sender as GcNumber;
if (gcNumber != null)
{
MethodInfo mi = gcNumber.GetType().GetMethod("NotifyLeave", BindingFlags.Instance | BindingFlags.NonPublic);
if (mi != null)
{
mi.Invoke(gcNumber, null);
}
}
this.textBox1.Select();
}
}
回复 2楼Leo的帖子
OK,这样确实解决问题了。
不过NotifyLeave是私有方法,继承类也只能反射调用。
调用NotifyLeave跟调用OnLeave方法有什么区别? 回复 3楼ghostlyt的帖子
非常严肃的告诉你,没有区别。
如果你是继承类,直接Call一下OnLeave即可。 回复 4楼Leo的帖子
懂了:| 回复 5楼ghostlyt的帖子
谢谢反馈。
页:
[1]