Я хочу установить связь между двумя дочерними формами, каждая из которых открывается из родительской формы (отдельная кнопка для отображения каждой формы). Я хочу изменить видимость и значение numericalUpDown
, а также видимость и текст текстового поля.
Я использовал свойства, часть get работает отлично, но часть set работает только для события child.show()
, например. когда я нажимаю Child1Form.button
, чтобы показать Child2Form
, часть "set" работает, но если я не показываю Child2Form
, она не работает.
в форме Child1:
public string TxtBx1TextChild1
{
get { return TextBox1.Text; }
set { TextBox1.Text = value; }
}
public bool NUD1VisibilityChild1
{
get { return NumericalUpDown1.Visible; }
set { NumericalUpDown1.Visible = value; }
}
в форме Child3:
это работает:
_OnButtonClick
для отображения Child1
формы.
Child1 child1 = new Child1();
child1.TxtBx1TextChild1 = "Ops...";
child1.NUD1VisibilityChild1=false;
child1.Show();
это не работает:
_OnAnotherButtonClick
, когда отображаются обе формы Child1 и Child2.
Child1 child1 = new Child1();
child1.TxtBx1TextChild1 = "ops...";
child1.NUD2VisibilityChild1=false;
Я также изменил модификаторы объектов (NUD и txtBx) на public и попытался внести свои изменения, но это также не удалось.
в Child3:
_OnButtnClick Event:
Child1 child1 = new Child1();
Child1.TextBox1.Text="Opsssss…";
numericalUD1Pass.Visible=false;
Я использовал из общего файла настроек для двух числовых UPDown в Child1 и Child3 (Properties.Setting.Default.mySettingFile). Он работает для значений (то есть для изменения значений), но не работает идеально для изменений видимости.
Я также использовал обработку событий формы. Метод был запущен, и сообщение показывалось правильно, но изменения в тексте и видимости - нет.
На стороне родителей, где я вызываю форму издателя, означает форму Child3:
Child3 child3 = new Child3();
Child1 child1 = new Child1();
child3.Child1Button2Clicked += child1.child3_Child1Button2Clicked;
child3.Show();
На стороне абонента (слушателя):
Обработка событий между двумя дочерними формами, которые открываются от одного и того же родителя (Два дочерних - один родительский).
public void child3_Child1Button2Clicked(object sender, FormsCommunication e)
{
NumericalUD1.Visible = e.NumericalUDPass;
textBox1.Text = e.textBoxPass;
MessageBox.Show("it got fire" + ": " + e.NumericalUDPass.ToString() + ": " + e.textBoxPass.ToString());
}
На стороне издателя:
public event EventHandler<FormsCommunication> Child1Button2Clicked;
//button click event to set the values and fire the method.
private void Child3Btn1_Click(object sender, EventArgs e)
{
FormsCommunication formsCommunication = new
FormsCommunication("2782",Convert.ToBoolean(false));
OnChild1Button2Clicked(formsCommunication);
}
protected virtual void OnChild1Button2Clicked(FormsCommunication e)
{
Child1Button2Clicked?.Invoke(this, e);
}
конструктор в классе EventArgs:
public FormsCommunication(string textBox, bool NumericalUD)
{
textBoxPass = textBox;
NumericalUDPass = NumericalUD;
}
public string textBoxPass { get; private set; }
public bool NumericalUDPass { get; private set; }
