Как я могу получить текстовое поле для общедоступных форм C # - PullRequest
0 голосов
/ 04 ноября 2019

По какой-то причине, когда я помещаю размер int и массив board в открытый класс, это дает мне 2 ошибки: первая:

инициализатор поля не может ссылаться на нестатическое поле, метод или свойство 'Form1.textBox1'

и второе:

инициализатор поля не может ссылаться на нестатическое поле, метод или свойство 'Form1.size '

public partial class Form1 : Form
    {
        int size = int.Parse(Textbox1.Text)
        Button[,] board = new Button[size,size];
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            random code that needs the board array
        }
        private void Form1_Click(object sender, EventArgs e)
        {
           other random code that need the board array
        }

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Textbox1.Text не инициализируется при создании Form1, поэтому просто поместите это в событие загрузки формы:

public partial class Form1 : Form
{
        int size = 0;
        Button[,] board;
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
           // random code that needs the board array
        }
        private void Form1_Click(object sender, EventArgs e)
        {
          // other random code that need the board array
        }
        private void Form1_Load(object sender, EventArgs e)
        {
           if (!string.IsNullOrEmpty(Textbox1.Text))
           {
            size = int.Parse(Textbox1.Text);
            board = new Button[size, size];
           }
        }

}
0 голосов
/ 04 ноября 2019

Как уже указывалось, вы изначально пытались инициализировать значение размера до того, как текстовое поле было даже создано. Поскольку вы полагаетесь на пользовательский ввод для предоставления TextBox1.Text, я бы посоветовал вам выполнить инициализацию массива Button [,] для события ввода текста TextBox1, даже если вы задаете значение по умолчанию для создания экземпляра, например board = new Button (1,1) в конструкторе формы;

...