Итак, я вижу некоторые ... не очень хорошие ответы, говорящие вам о том, что нужно идти вперед и обнародовать свой флажок.Не.Предоставьте событие из ваших MDI-форм, которые основная форма может обрабатывать при их создании.Когда дочерняя форма запускает событие, основная форма может обновлять пользовательский интерфейс так, как считает нужным.
На самом деле не очень хорошая идея выставлять элементы интерфейса.Что если вы удалите этот CheckBox или захотите использовать вместо него другой элемент управления?Теперь вам также нужно изменить свои дочерние формы, потому что они ожидают, что CheckBox будет там.Вы просочились в детали реализации, и это действительно только усложняет процесс.
Как это сделать?Пожалуйста, наведите
Я был бы рад, особенно если я считаю ответ, который вы выбрали, «правильным», что честно говоря ужасно.Вот простой пример кода, который определяет класс Form, который предоставляет событие.Когда это событие обрабатывается родительской формой, пользовательский интерфейс обновляется.
public class ChildForm
{
public event EventHandler SomeEvent;
protected virtual void OnSomeEvent( EventArgs e )
{
EventHandler del = SomeEvent;
if( del != null )
{
// fire the event
del( this, e );
}
}
private void someButton_Click( object sender, EventArgs e )
{
// for the sake of example, let's assume that you want
// to notify listeners of "SomeEvent" when a button is clicked
OnSomeEvent( this, EventArgs.Empty );
}
}
public class MainForm : Form
{
private void ShowChildForm( )
{
using( ChildForm frm = new ChildForm() )
{
frm.SomeEvent += frm_SomeEvent;
frm.ShowDialog();
}
}
private void frm_SomeEvent( object sender, EventArgs e )
{
// this is where we handle the event "SomeEvent" that the
// child form fires when you need to communicate that something has happened.
// now you may update the UI as needed and the ChildForm class does not have
// to know anything about how the UI is actually implemented.
// this is referred to as "loose coupling" and makes your code more maintainable.
someCheckbox.Checked = true;
}
}