我正在开发一个控制台应用程序,它创建一个表单来提醒某些给定状态的用户 - 在稍后阶段,代码库将成为一个类库.
但是,现在,我需要显示表单(ShowDialog将是这里最好的方法,我猜)然后在表单关闭之前调用任意方法.
作为一个例子,我需要显示表单,设置标签控件的文本值,等待n秒,然后更改标签的值,然后关闭表单.我知道这听起来有点微不足道,但我正在尝试对设计进行概念验证.
我已经浏览了一下它看起来不可能,因为ShowDialog()要求我在调用方法/类之前继续通过代码列表之前关闭表单.
这是我到目前为止所拥有的:
PopUpForm myForm = new PopUpForm(string messageToDisplay);
myForm.ShowDialog();
//call myForm.someMethod() here, before the form closes
//dispose of the form, now that we've no use for it
myform.Dispose();
//target method in PopUpform class
public void someMethod()
{
lblText.Text = "Waiting for some reason";
//wait n number of seconds
lblText.Text = "Finished waiting. Form will now close";
//it doesn't matter if the form closes before the user can see this.
}
Run Code Online (Sandbox Code Playgroud)
看起来ShowDialog()不支持这种行为.我正在研究BackgroundWorker线程,但是想知道是否有人对此有任何建议,或者之前遇到过这个问题.
如果要显示表单,然后继续工作,然后关闭它 - 您可以通过Form.Show()而不是Form.ShowDialog():
using (var myForm = new PopUpForm(messageToDisplay))
{
myForm.Show(); // Show the form
DoWork(); // Do your work...
myForm.Close(); // Close it when you're done...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果这纯粹是一个控制台应用程序(并且没有消息泵),那么这可能无法正常工作.
其他选项是在你的内部提供一个计时器Form让它关闭,或者将一个委托传递给表单以在Show上运行你的方法,之后它可以关闭它自己.
在稍后阶段,代码库将成为类库.
执行此操作时,您可能希望提供不同的机制来提供通知.将您的库与特定的UI技术相结合是一个坏主意.让您的库只提供事件或其他通知可能会更好,并允许用户向用户提供UI /通知.
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |