Вызов класса из другой формы
Я пытаюсь вызвать класс из form2 в C#, например, ниже приведен код из "Form2".
private void button17_Click(object sender, EventArgs e)
{
Form1 frontmain = new Form1();
frontmain.buttonchange();
this.Hide();
}
Это не извинит класс в "Form1", называемый "buttonchange". Ниже приведен код для класса "buttonchange":
public void buttonchange()
{
button1.Text = workshop1;
button2.Text = workshop2;
button3.Text = workshop3;
button4.Text = workshop4;
button5.Text = workshop5;
{
Я предполагаю, что это как-то связано с настройками конфиденциальности между form1 и form2, однако я так и не нашел решения. Я всегда так или иначе работал вокруг этого. Кто-нибудь знает, в чем здесь проблема?
2 ответа
Вы создаете новый экземпляр Form1
и вызывая код для этого, что, вероятно, не то, что вы на самом деле собираетесь делать.
Если вы пытаетесь сослаться на существующий экземпляр Form1, вам нужно будет сослаться на него (а не создавать новый экземпляр).
Если экземпляр Form1
порождает форму, в которой находится ваш обработчик кликов, вы можете ссылаться на него следующим образом:
Form1 frontmain = this.Owner as Form1;
Если экземпляр Form1
не порождает вашу вторую форму с помощью обработчика кликов, тогда вам нужно будет использовать подход, основанный на событиях (в любом случае это лучший подход, так как он устраняет зависимости).
Я бы настроил события на form2 и настроил form1 для захвата событий form1.
Вот ссылка на настройку событий: