Я не могу вызвать или назначить 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(...));