Я не могу вызвать или назначить textBox.text из другого метода

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

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    //listBox1.Items.Add(printPath());
}

private void textBox1_TextChanged(object sender, EventArgs e)
{

}

Я хочу напечатать значения из этого метода:

static void showPath(List<PathFinderNode> mPath)
{
    TextBox tx = new TextBox();
    ListBox ls = new ListBox();
    var bn = new ListBox();
    string disP = "nnnn";
    MessageBox.Show("show path reached"); //method check
    try
    {
        foreach (PathFinderNode node in mPath)
        {
            if ((node.X - node.PX) > 0) { disP = "Right"; }
            if ((node.X - node.PX) < 0) { disP = "Left"; }
            if ((node.Y - node.PY) > 0) { disP = "UP"; }
            if ((node.Y - node.PY) < 0) { disP = "Down"; }

            ls.Items.Add(disP);
            tx.Text = disP;
            bn.Text = disP;
        }
    }
    catch (FormatException p)
    {
        Console.WriteLine(p.Message);
    }
}

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

1 ответ

Почему бы не заставить метод просто возвращать шаги пути и позволить вызывающей стороне решить, как с ним работать.

static string[] showPath(List<PathFinderNode> mPath)
{
    List<string> paths = new List<string>();
    string disP = string.Empty;
    MessageBox.Show("show path reached"); //method check
    try
    {
        foreach (PathFinderNode node in mPath)
        {
            if ((node.X - node.PX) > 0) { disP = "Right"; }
            if ((node.X - node.PX) < 0) { disP = "Left"; }
            if ((node.Y - node.PY) > 0) { disP = "UP"; }
            if ((node.Y - node.PY) < 0) { disP = "Down"; }

            paths.Add(disP);
        }
    }
    catch (FormatException p)
    {
        Console.WriteLine(p.Message);
    }
    return paths.ToArray();
}

Тогда вы можете просто назвать это так:

listBox1.AddRange(showPath(...));
Другие вопросы по тегам