我在UI线程以外的线程上,需要显示一个以应用程序主窗体为中心的模式窗体。我通常做的是使用主窗体的宽度和高度以及模态窗体来计算位置,然后使用主窗体的PointToScreen方法来获取模态窗体的位置。因为我在另一个线程上,我需要使用Control.Invoke来调用此方法。我只是无法弄清楚如何将Point类型的参数传递给Control.Invoke(params object [])。值类型和字符串工作正常。
或,如果有人能找到一种更好的方式来显示以主要形式为中心的表单而不管线程,那就太棒了。 MessageBox似乎能够做到这一点(虽然不是模态)。
调用这样的东西我没问题。
mainform.Invoke(..., object[] { someString });
问题在于:
public Point Control.PointToScreen(Point p)
此方法将 Point 作为参数并返回 Point 。我如何通过Control.Invoke调用它?
答案 0 :(得分:0)
myWhatever.Invoke(myDelegate, new object[] { myParam1, myParam2, myParam3 });
答案 1 :(得分:0)
看看this,您可以调整函数UpdateStatusBarMessage_OnNewStatusMessage,以显示表单而不是编写消息。
答案 2 :(得分:0)
WRT“一种更好的方式来显示一个以主线形式为中心的形状而不管线程,这将是很好的” - 你确实不需要手动对中。 :)