Ключевое слово "this" недоступно при передаче его в дочернюю форму - PullRequest
0 голосов
/ 03 декабря 2018

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

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

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, но оно не сработало.

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

1 Ответ

0 голосов
/ 03 декабря 2018

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

public partial class PerfilAcesso : Form
{
     public PerfilAcesso () 
     {
        bdeForm = new BDE(this); 
        workshopForm = new Workshop(this); 
     }
     BDE bdeForm;
     Workshop workshopForm;
}
...