2009-09-16 111 views
0

我有一个简单的问题。我有一个主表单,然后是一个启动表单,我可以从中选择要生成的新3D模型。从启动窗体中选择新的3D模型时,我想先检查我以前的模型是否已保存。我只是想使用委托从主窗体传递一个布尔值到启动窗体,但我似乎无法访问主窗体或其任何变量。我认为这将会如此简单:<代码> frmMain myForm = new frmMain(); </code >,但键入frmMain不会在智能感知中显示任何内容。将变量从主窗体传递给输入窗体

任何提示?

回答

3

添加公共财产的主要形式

public bool IsDirty 
{ 
    get;set; 
} 

,那么你可以在你的启动形式访问this.ParentForm.IsDirty

记得要传递给主窗体的引用,当你表现出启动窗体.. startupForm.showDialog(this);

0

您的主窗体无法通过启动窗体访问。您必须将其存储到某个您想要使用它的位置。

您可以通过以下也做的方式是(连同其他方式:)

// This class is mainly used to transfer values in between different components of the system 
    public class CCurrent 
    { 

     public static Boolean Saved = false; 


    } 

确保你把这个类命名空间是双方的形式访问。

现在在您的frmMain表单中设置CCurrent.Saved的值并在启动窗体中访问它。

0

这里是我的建议: 发生在你的主要形式的3DModel对象属性:

private Model _model; 

声明启动窗体作为一个对话框(如打开文件对话框),做这样的事情:

public void OpenModel() 
{ 
using(var frm=new StartUpForm()) 
{ 
if(frm.ShowDialog()==DialogResult.OK)) 
{ 
if(_model.IsDirty) 
{ 
if(MessageBox.Show("Model is changed do you want to save it?","",MessageBoxButtons.YesNo")==DialogResult.Yes) 
_model.Save(); 

_model=frm.SelectedModel; 
} 
} 
} 


} 

你的启动表格应该有这样的界面:

public interface IStartupForm:IDisposable 
{ 
DialogResult ShowDialog(IWin32Window parent); 
Model SelectedModel{get;} 

} 
相关问题