我有一個簡單的問題。我有一個主表單,然後是一個啓動表單,我可以從中選擇要生成的新3D模型。從啓動窗體中選擇新的3D模型時,我想先檢查我以前的模型是否已保存。我只是想使用委託從主窗體傳遞一個布爾值到啓動窗體,但我似乎無法訪問主窗體或其任何變量。我認爲這將會如此簡單:<代碼> frmMain myForm = new frmMain(); </code >,但鍵入frmMain不會在智能感知中顯示任何內容。將變量從主窗體傳遞給輸入窗體
任何提示?
我有一個簡單的問題。我有一個主表單,然後是一個啓動表單,我可以從中選擇要生成的新3D模型。從啓動窗體中選擇新的3D模型時,我想先檢查我以前的模型是否已保存。我只是想使用委託從主窗體傳遞一個布爾值到啓動窗體,但我似乎無法訪問主窗體或其任何變量。我認爲這將會如此簡單:<代碼> frmMain myForm = new frmMain(); </code >,但鍵入frmMain不會在智能感知中顯示任何內容。將變量從主窗體傳遞給輸入窗體
任何提示?
添加公共財產的主要形式
public bool IsDirty
{
get;set;
}
,那麼你可以在你的啓動形式訪問this.ParentForm.IsDirty
,
記得要傳遞給主窗體的引用,當你表現出啓動窗體.. startupForm.showDialog(this);
您的主窗體無法通過啓動窗體訪問。您必須將其存儲到某個您想要使用它的位置。
您可以通過以下也做的方式是(連同其他方式:)
// 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的值並在啓動窗體中訪問它。
這裏是我的建議: 發生在你的主要形式的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;}
}