Передача переменных из основной формы в форму ввода

У меня простой вопрос. У меня есть основная форма, а затем форма запуска, из которой я могу выбрать новую 3D-модель для генерации. При выборе новой 3D-модели из формы запуска я хочу сначала проверить, была ли сохранена предыдущая модель, с которой я работал, или нет. Я просто хочу передать логическое значение из главной формы в форму запуска с помощью делегата, но я не могу получить доступ к основной форме или любой из ее переменных. Я думал, что это будет так же просто, как сказать: frmMain myForm = new frmMain ();, но ввод frmMain ничего не показывает в intellisense.

Есть намеки?

3 ответа

Добавьте публичную собственность в вашу основную форму

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;

Объявите форму запуска как диалог (например, 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;}

}
Другие вопросы по тегам