【发布时间】:2017-07-13 21:44:44
【问题描述】:
问题代码:
for (int i = 0; i <= numberOfPlayers - 1; i++)
{
if (i == dealerPosition())
{
StringBuilder sb = new StringBuilder();
// e.g. outputs "tbPosition1"
sb.Append("tbPosition").Append(dealerPosition().ToString());
// The following line of code does not work as sb is a string containing
// "thPosition1", not my controller tbPosition1. How do I fix this?
Dispatcher.Invoke(() => { (sb.Text = dealerPosition().ToString(); });
break;
}
}
使用 C#、WPF、Visual Studio。
【问题讨论】:
-
所以要明确一点:您正在使用
sb来构建控件的名称(例如tbPostiion123),然后您想使用它来设置该控件的文本 -即相当于更明确的:tbPosition123.Text = "..."? -
这样做通常是个坏主意。有关更多信息,请参阅此帖子:stackoverflow.com/questions/5428058/…
-
@Kjartan - 这是完全正确的!你知道有什么办法吗? :)
-
@Complexity - 我正在尝试这种方法来避免大量的 if/elseif 语句。
-
这就是我解释你的代码的方式:如果我在位置 X 并且那是你想要设置文本控件的经销商位置 (DP) tbPositionX.Text = DP。但是 DB 等于 X,因此您将始终将文本控件设置为与文本控件的编号相同的数字。例如 tbPositoin1.Text = "1" 或 tbPosition2.Text = "2"。对吗?