【发布时间】:2014-01-30 00:33:31
【问题描述】:
我正在尝试使用 C# 在 WinForms 中创建数独作为学校作业。数独中的所有内容都必须是面向对象的,所以我没有选择像老师那样构建代码。
当我在 SudokuGUI 的文本框中输入一个数字(整数)时,它会尝试将数字放入数组中但失败并给我一个众所周知的错误:
“System.NullReferenceException”类型的未处理异常 发生在 WindowsFormsApplication5.exe 的附加信息: 对象引用未设置为对象的实例。
代码如下所示:
-
首先,我们将按键释放时的数字从 TextBox 发送到将数字放入数组的方法
private void Valuechange_KeyUp(object sender, KeyEventArgs e) { TextBox text_box = sender as TextBox; var position = tableLayoutPanel1.GetPositionFromControl(text_box); int x = position.Row; int y = position.Column; if (int.TryParse(text_box.Text, out value) && int.Parse(text_box.Text) < 10 && int.Parse(text_box.Text) > 0 || value == 0) { add_value.Array_AddNumber(x, y, value); } else { MessageBox.Show("Skriv in en siffra mellan 1-9"); text_box.Clear(); } } -
这是将文本框中的数字添加到将保存数字的数组的方法
class Ruta { Siffra number = new Siffra(); public Siffra[,] SudokuArray = new Siffra[9, 9]; public void Array_AddNumber(int x, int y, int value) { SudokuArray[x, y].nummer = value; } } -
这里是“Siffra”,在瑞典语中是数字的意思,就是数组的类型
class Siffra { private int _nummer; public int nummer { get { return _nummer; } set { _nummer = value; } } }
我做错了什么,我真的不明白,我的老师也帮不了我:/
这是整个解决方案: https://dl.dropboxusercontent.com/u/13409794/WindowsFormsApplication5.zip
【问题讨论】:
-
代码的屏幕截图让我们在这里工作很痛苦。将代码复制/粘贴到您的问题中。
-
如果您觉得需要将整个项目打包并发布给我们,那么您还没有将问题范围缩小到您应该解决的任何地方。
-
@JoelCoehoorn 我用代码替换了图片,如果有人遇到与我相同的新手错误,将更容易找到此线程。
-
@tnw .zip 只是我添加的内容,因为我认为如果您了解全貌,可能会让你们更容易理解我的问题。