【发布时间】:2018-03-18 22:49:18
【问题描述】:
在当前页面(包含在 MainWindow 内的框架内)中,当我单击按钮时会发生这种情况:
for (int i = 0; i < mw.pizzas.Length + 1; i++)
{
if (i == 10)
{
MessageBoxResult result = MessageBox.Show("You can't order more than 10 pizzas");
break;
}
if (mw.pizzas[i] == null)
{
mw.pizzas[i] = pizza;
break;
}
}
NavigationService.Content = new AnotherPage();
mw.pizzas 字符串数组包含 10 个(我认为是未定义的)变量。我已经在 MainWindow 中定义了:
public string[] pizzas = new string[10];
我已经在当前页面定义了,像这样:
MainWindow mw = new MainWindow();
此循环通过使用变量“pizza”的内容定义这 10 个插槽来递增。定义数组的所有索引后,应该会弹出一条消息。但是,此消息从未出现。我在这里做错了什么?
编辑:这只是一个疯狂的猜测。每次导航到此页面时,这可能与我创建 new CurrentPage 有关。每次定义其中一个索引时,都会导航回上一页,然后使用NavigationService.Content = new CurrentPage();
编辑 2:看起来第二个语句有问题。 mw.pizzas[0] 为空,然后在其中获取披萨的内容,然后在程序退出页面并再次进入后以某种方式返回为空。
编辑 3:我尝试将 PizzaIDs 数组设为静态,但出现以下错误:无法使用实例引用访问成员“MainWindow.pizzaIDs”;改为使用类型名称来限定它
【问题讨论】:
-
那是因为你不断更新
newing 新的MainWindows。每个MainWindow都有自己的pizzas副本。您需要将pizzas更改为static或仅将new更改为MainWindow。 -
我将其更改为静态但出现此错误:无法使用实例引用访问成员“MainWindow.pizzas”;改为使用类型名称来限定它
-
该异常是不言自明的。使用
MainWindow.pizzas而不是`mw.pizzas。
标签: c# wpf if-statement