我有一个TextBox,在LostFocus事件中我调用了一个函数,这里我需要调用我的函数,在某些情况下必须删除TextBox,所以当代码回到LostFocus事件时,它给出我是一个NullReferenceException。
那我该怎么办?
只有在LostFocus功能结束后才可以调用我的函数吗?
感谢。
嗨!谢谢你的回答......下面你可以看到一个简单的问题:
void senseMessage_LostFocus(object sender, EventArgs e)
{
...
MyFunction();
}
void MyFunction()
{
...
senseList.RemoveItem(senseMessage);
... add some other items to senseList...
senseMessage = new StedySoft.SenseSDK.SensePanelTextboxItem();
senseMessage.Text = "test";
senseList.AddItem(senseMessage);
}
senseList是一个项目列表,我需要将senseMessage始终放在列表的末尾。 因此,当senseMessage失去焦点(并准备在列表的新项目中添加文本)时,我需要删除senseMessage,添加新项目,并重新添加senseMessage。
我希望你能帮助我..
答案 0 :(得分:2)
delegate void VoidDelegate(); void senseMessage_LostFocus(object sender, EventArgs e) { BeginInvoke(new VoidDelegate(MyFunction), new object[]{}); }
答案 1 :(得分:0)
LostFocus
事件非常低级,并且与WIN32 api密切相关。请尝试使用Leave
事件。
如果仍然无效,请尝试使用WindowsFormSynchronizationContext
来延迟调用您的函数:
WindowsFormSynchronizationContext.Post(obj => { MyFunction(); }, nil);
或类似的东西。很抱歉,如果语法可能不准确,因为我现在正在运行OS X,所以我没有VS。