Вот мое предложение:
поместите свойство объекта 3DModel в основную форму:
private Model _model;
Объявите вашу форму запуска как диалог (например, OpenFileDialog) и сделайте что-то вроде этого:
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;}
}