Как изменить область в приложении WinForms для переноса переменных из метода в отправитель объекта? - PullRequest
0 голосов
/ 14 июня 2019

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

Я попытался изменить модификаторы на публичные, приватные, статические, void, string, string [] и т. Д.

Я также установил для всех объектов в приложении WinForms значение Public

public partial class AutoPay : Form
{

    public AutoPay()
    {
        InitializeComponent();
    }

    public void HeaderInformation(string dateAndTime, string fileNumber)
    {
        dateAndTime = DateTime.Now.ToString();
        fileNumber = txtFileNumber.Text;

   string[] headerArray = new string[2];
        headerArray[0] = dateAndTime;
        headerArray[1] = fileNumber;
    }

    public void BtnSave_Click(object sender, EventArgs e)
    {
        HeaderInformation(headerArray[0], headerArray[1]);
    }

}

headerArray [0] под действием BtnSave_Click имеет красную линию под ним, показывающую, что он находится за пределами области действия.

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Попробуйте объявить headerArray как свойство класса

0 голосов
/ 14 июня 2019

Как уже упоминалось ... вам нужно объявить headerArray вне метода ... Также ... похоже, что вы пытаетесь добавить информацию в массив до того, как массив получит информацию ... попробуйте это так (Есть и много других способов сделать это;)):

public partial class AutoPay : Form
{

  private string[] headerArray;   // <-- declare it here...

  public AutoPay()
  {
    InitializeComponent();

    headerArray = new string[2];  // <-- sometimes the normal way to initialize...
  }

  public void HeaderInformation(string dateAndTime, string fileNumber)
  {
    // reinitialize headerArray for safety....
    headerArray = new string[2];
    headerArray[0] = dateAndTime;
    headerArray[1] = fileNumber;
  }

  public void BtnSave_Click(object sender, EventArgs e)
  {
    HeaderInformation(DateTime.Now.ToString(), txtFileNumber.Text);
  }

}

или

public void HeaderInformation()
{
    // reinitialize headerArray for safety....
    headerArray = new string[2];
    headerArray[0] = DateTime.Now.ToString();
    headerArray[1] = txtFileNumber.Text;
}

public void BtnSave_Click(object sender, EventArgs e)
{
    HeaderInformation();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...