Почему массив пуст в form2 - PullRequest
0 голосов
/ 01 апреля 2020

Привет, я новичок в области ИТ. Можете ли вы, ребята, помочь мне? Я работаю с массивом. У меня нулевое значение в многомерном массиве. Массив находится в классе, в то время как я помещаю значения в форму 1, получая значения в форме 1, кажется, все в порядке. Но в форме 2 я не могу получить любое значение в классе, потому что его нуль.

class Storage
{
    public string[,] Accounts = new string[100,18];

    ...
}

Login.cs

Storage Datas = new Storage();

private void button2_Click(object sender EventArgs e)
{
    for (int p = 0; p < Datas.Accounts.GetLength(0); p++)
    {
        if (Datas.Accounts[p, 0] != null) {
            MessageBox.Show(Datas.Accounts[p, 0]);
        }
    }
}

Form1.cs

private void button2_Click(object sender EventArgs e)
{
    for (int p = 0; p < Datas.Accounts.GetLength(0); p++)
    {
        if (Datas.Accounts[p, 0] != null) {
            MessageBox.Show(Datas.Accounts[p, 0]);
        }
    }
}

1 Ответ

1 голос
/ 01 апреля 2020

Откуда берется Datas in Form1.cs? В Login.cs это приватное поле. Таким образом, вы не можете получить к нему доступ с Form1.cs. Я предполагаю, что вы создали новый Storage объект в Form1.

Я предполагаю, что Form1 является основной формой, и что вы открыли форму Login из Form1. Затем вы можете решить проблему, передав данные между формами через конструктор второй формы.

Добавьте этот конструктор Login.cs:

public partial class Login : Form
{
    private readonly Storage _datas;

    public Login(Storage datas)
    {
        InitializeComponent();
        _datas = datas;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // Here you can access: _datas.Accounts[p, 0]
    }
}

В Form1 вы можете открыть форма входа с

var login = new Login(Datas); // Pass the data as constructor parameter.
if (login.ShowDialog() == DialogResult.OK) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...