我正在开发一个VisualBasic 2010应用程序。在运行期间,我注意到只要主窗体打开任何子对话框,窗体,消息框,提示等,所述主窗体或父窗口就会停止访问/可点击。
在大多数情况下,我可以看到它的价值和逻辑,但是我需要使用几个子表单,同时保持主表单仍然可用。我不想使用MDI,因为从我所看到的,MDI在同一个窗口中形成所有产生的东西,这不是我想做的事情。
有没有人知道是否有办法设置VB.net应用程序,以便应用程序用户可以同时使用父项和所述子表单?
答案 0 :(得分:3)
假设您正在谈论Winforms(因为您提到了MDI),您有两种方法来显示子表单。一个是 private Expression<Func<TModel, object>> CreateGetterExpression( PropertyInfo propertyInfo )
{
var getter = propertyInfo.GetGetMethod();
Expression<Func<TModel, object>> expression = m => getter.Invoke( m, new object[] { } );
return expression;
}
,另一个是form.Show()
。
form.ShowDialog()
会使父表单和子表单都处于活动状态,并且用户可以切换回父表单而无需关闭子表单,而form.Show()
将使子表单生成表单块访问父表单,直到它关闭(由用户或程序代码本身,无关紧要)。
form.ShowDialog()
只是使用MessageBox.Show()
显示表单,这就是用户无法访问父表单直到消息框关闭的原因。
创建一个模仿MessageBox类的类非常容易,只使用ShowDialog()
而不是Show()
,从而使用户能够访问消息表单和它的父表单。