Вызов класса из другой формы - PullRequest
1 голос
/ 01 февраля 2012

Я пытаюсь вызвать класс из 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 ]

0 голосов
/ 01 февраля 2012

Вы создаете новый экземпляр Form1 и вызываете код для этого, что, вероятно, не то, что вы на самом деле намереваетесь делать.

Если вы пытаетесь сослаться на существующий экземпляр Form1, тогда вам нужно сослаться на это (а не создавать новый экземпляр).

Если экземпляр Form1 порождает форму, в которой находится ваш обработчик кликов, вы можете ссылаться на него следующим образом:

Form1 frontmain = this.Owner as Form1;

Если экземпляр Form1 не порождает вашу вторую форму с обработчиком кликов, вам нужно будет использовать подход, основанный на событиях (в любом случае это лучший подход, так как он устраняетзависимостей).

0 голосов
/ 01 февраля 2012

Я бы настроил события на form2 и настроил form1 для захвата событий form1.

Вот ссылка на настройку событий:

http://msdn.microsoft.com/en-us/library/awbftdfh.aspx

...