Ключевое слово this недоступно при передаче его в дочернюю форму

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

Я написал код, как показано ниже:

public partial class PerfilAcesso : Form
{
 // this is the parent
     BDE bdeForm = new BDE(this); //error line
     Workshop workshopForm = new Workshop(this); //error line

// rest of the info
}


public partial class Workshop : Form
{
    // this is one child
    PerfilAcesso perfilAcesso;

    public Workshop(PerfilAcesso parent)
    {
        InitializeComponent();
        perfilAcesso = parent;
    }
}

public partial class BDE : Form
{
    // this is another child
    PerfilAcesso perfilAcesso;

    public BDE(PerfilAcesso parent)
    {
        InitializeComponent();
        perfilAcesso = parent;
    }
}

Однако он не будет компилироваться, потому что выдает следующую ошибку

Ключевое слово this недоступно в текущем контексте.

в строках 4 и 5, где я указал.

Я попытался установить для свойства IsMdiContainer в родительской форме значение true, но это не сработало.

Может ли кто-нибудь дать мне какие-либо указания относительно того, что я делаю неправильно? Я рассмотрел вопросы о создании родительской/дочерней формы, и все они показывают одно и то же.


person krobelusmeetsyndra    schedule 03.12.2018    source источник
comment
Используйте конструктор, тогда вы можете использовать this   -  person Tim Schmelter    schedule 03.12.2018
comment
@Ранго спасибо! Это сработало!   -  person krobelusmeetsyndra    schedule 03.12.2018


Ответы (1)


this недоступен при инициализации полей. Вам нужно будет переместить инициализацию в конструктор, если вам нужно использовать this:

public partial class PerfilAcesso : Form
{
     public PerfilAcesso () 
     {
        bdeForm = new BDE(this); 
        workshopForm = new Workshop(this); 
     }
     BDE bdeForm;
     Workshop workshopForm;
}
person Titian Cernicova-Dragomir    schedule 03.12.2018