2009-09-16 104 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;} 

} 
相關問題