Создайте объект, когда форма загружается в windows форм - PullRequest
2 голосов
/ 21 января 2020

Я собираюсь написать проект для представления дерева AVL следующим образом: pi c

У меня есть два класса: AVLTree & TreePresantation. Проблема в том, что я не могу использовать методы своих классов внутри Button_Click

  private void Form1_Load(object sender, EventArgs e)
    {
        AVLTree avltree = new AVLTree();
        TreePresantation treePresantation = new TreePresantation(avltree);
    }

    private void BtnPut_Click(object sender, EventArgs e)
    {
        if ((txtPutKey.Text == null) || (txtPutValue.Text == null))
        {
            txtMessage.Text = "Key or Value cannot be empty!";
        }
        else
        {
            treepresantation.Put(Convert.ToInt32(txtPutKey.Text), txtPutValue.Text);
        }
    }

"treepresantation" в btnPut_Click подчеркнут красным, а ошибка: Ошибка CS0103 Имя "treepresantation" не существует в текущий контекст

кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 21 января 2020

Кажется, я не могу найти дубликат, даже если кажется, что он должен быть, поэтому вот оно.

Ваши переменные не находятся в той же области видимости , где вы их называете поэтому вы не можете позвонить им.

Вот один из способов решения вашей проблемы:

public YourClass {

    private AVLTree avltree;
    private TreePresantation treePresantation;

    private void Form1_Load(object sender, EventArgs e)
    {
        avltree = new AVLTree();
        treePresantation = new TreePresantation(avltree);
    }

    private void BtnPut_Click(object sender, EventArgs e)
    {
        if ((txtPutKey.Text == null) || (txtPutValue.Text == null))
        {
            txtMessage.Text = "Key or Value cannot be empty!";
        }
        else
        {
            treepresantation.Put(Convert.ToInt32(txtPutKey.Text), txtPutValue.Text);
        }
    }
}

Но, как отметил Томас, вы должны найти учебник C#, чтобы понять основы.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Если вам не нужен доступ к avltree где-то еще, чем в Form1_Load, вы можете удалить это из ваших локальных свойств класса.

0 голосов
/ 21 января 2020
public class Form1
{
    private TreePresantation treePresantation = null;

    private void Form1_Load(object sender, EventArgs e)
    {
        AVLTree avltree = new AVLTree();
        treePresantation = new TreePresantation(avltree);
    }

    private void BtnPut_Click(object sender, EventArgs e)
    {
        if ((txtPutKey.Text == null) || (txtPutValue.Text == null))
        {
            txtMessage.Text = "Key or Value cannot be empty!";
        }
        else
        {
            treepresantation.Put(Convert.ToInt32(txtPutKey.Text), txtPutValue.Text);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...