我无法从另一个方法中调用或分配textBox.text

时间:2017-05-04 19:35:07

标签: c# winforms c#-4.0 pathfinder

我正在尝试在列表框或文本框中显示我的应用的结果,但两者都不起作用。我不知道如何拨打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 个答案:

答案 0 :(得分:0)

为什么不让方法只返回路径步骤,让调用者决定如何处理它。

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(...));