Элементы управления не меняют цвет или текст, когда я вызываю метод из другой формы - PullRequest
0 голосов
/ 10 сентября 2018

Примечание: Form2 является дочерней формой MDI, и я установил для всех модификаторов Form1 значение Public

мой метод не работает, когда я хочу изменить цвет или текст или т. Д ... Например: есть две формы, Form1 и Form2. В Form2: label1.Click, я сделал это:

В форме 2:

private void label1_MouseClick(object sender, MouseEventArgs e)
    {
        Form1 f1 = new Form1();
        Label name = ((Label)sender);
        f1.getInfoLabel(name);
    }

Хорошо, все работает до сих пор, но там:

В форме 1:

public void getInfoLabel(Label obj)
    {
        pictureBox1.BackColor = obj.Forecolor; //not working
        TextBox1.Text = obj.Text; //not working
        MessageBox.Show(obj.Forecolor.ToString()); //working
        MessageBox.Show(obj.Text); //working
    }

Любая помощь? Пожалуйста.

1 Ответ

0 голосов
/ 10 сентября 2018

вместо

Form1 f1 = new Form1();

использование

Form1 f1 = this.MDIParent as Form1;
if (f1 != null)
{
    f1.getinfolabel(sender as Label);
}

Как уже указывалось, вы создаете новый экземпляр Form1 и взаимодействуете с ним вместо взаимодействия с родительской формой. Пока вы правильно устанавливаете MDIParent для Form2, вышеописанное должно работать.

Альтернативой является использование:

Form1 f1 = Appliction.OpenForms.OfType<Form1>().FirstOrDefault();
if (f1 != null)
{
    f1.getinfolabel(sender as Label);
}
...