BillWoodruff
Несколько иной подход.
1. Сделайте то, что вы называете "дочерней формой", собственной формой основной формы. Предположим, вы добавили вторую форму в свой проект с именем ' OwnedFormExample:
OwnedFormExample OwnedForm = new OwnedFormExample();
private void MainForm_Load(object sender, EventArgs e)
{
OwnedForm.ShowInTaskbar = false;
OwnedForm.Owner = this;
OwnedForm.FormClosing += OwnedFormOnFormClosing;
}
Принадлежащая форма всегда будет отображаться вместе с формой владельца: она всегда будет отображаться над формой владельца; если вы свернете форму владельца, принадлежащая форма будет свернута.
Предположим, что кнопка на главной форме называется " btnShowOwnedFor
private void btnShowOwnedForm_Click(object sender, EventArgs e)
{
OwnedForm.Show();
btnShowOwnedForm.Enabled = false;
}
Щелчок показывает принадлежащую форму и отключает кнопку: вы гарантируете, что пользователь не может совершить ошибку нескольких щелчков (защитное Программирование).
Предположим, я хочу повторно использовать эту вторую форму, а не удалять ее и создавать заново каждый раз, когда я хочу ее использовать ?
private void OwnedFormOnFormClosing(object sender, FormClosingEventArgs formClosingEventArgs)
{
OwnedForm.Hide();
if (formClosingEventArgs.CloseReason == CloseReason.UserClosing)
{
btnShowOwnedForm.Enabled = true;
formClosingEventArgs.Cancel = true;
}
}
Здесь FormClosing EventHandler для принадлежащей формы скрывает принадлежащую форму и, поскольку принадлежащая форма закрывается пользователем, отменяет закрытие после включения кнопки.
Вот как может выглядеть пример собственной формы:
public partial class OwnedFormExample : Form
{
public OwnedFormExample()
{
InitializeComponent();
}
public string OwnedFormTextBoxData
{
set { textBox1.Text = value; }
get { return textBox1.Text; }
}
}
Публичная собственность дает внешнему создателю форму собственности
пример способ доступа к содержимому текстового поля ... без прямого доступа к элементу управления TextBox (инкапсуляция).
В любое время в коде формы владельца Вы можете получить доступ или установить текстовое содержимое в текстовом поле формы владельца.
Обратите внимание, что, хотя вы можете сделать форму родительской для другой формы, это всегда, имхо, серьезная ошибка.