Object reference not set to an instance of an object - C# (215777)
Формулировка задачи:
Помоги исправить ошибку
В файле Program.cs:
В форм 1:
В Form 2:
Компилируется, но после заполнения массива t1 и при нажатии button2 во второй форме вылазиет ошибка. Если задать массив 0х0 успешно переходит на форму 3
Откуда в t1 Null? я вроде как все ячейки заполняю.
Даже ставил условие
Не помогло
Помогите кто может)
namespace WindowsFormsApplication2 { static class Data { public static TextBox[,] t1 { get; set; } public static TextBox[,] t2 { get; set; } public static TextBox[,] t3 { get; set; } public static int n { get; set; } public static int m { get; set; } public static double[,] x { get; set; } public static double[,] irr { get; set; } public static double[,] npv { get; set; } public static double[] sumnpv { get; set; } }
public void button1_Click(object sender, EventArgs e) { Data.n = int.Parse(textBox1.Text); Data.m = int.Parse(textBox2.Text); form2.textBox102.Text = textBox1.Text; form2.textBox101.Text = textBox2.Text; Data.t1 = new TextBox[Data.n, Data.m];// создаём двумерный масив текстбоксов for (i = 0; i < Data.n; i++) for (j = 0; j < Data.m; j++)// проходим по елементам масива { Data.t1[i, j] = new TextBox();//для каждого елемента массива создаем текстбокс Data.t1[i, j].Location = new Point(i * 60 + 121, j * 28 + 81);//привязываем расположение тексбоксов к индексам масива чтоб они не налаживались друг на друга Data.t1[i, j].Size = new Size(51, 20);//размеры текстбокса form2.panel1.Controls.Add(Data.t1[i, j]); } form2.Show(); }
public void button2_Click(object sender, EventArgs e) { for (i = 0; i < Data.n; i++) for (j = 0; j < Data.m; j++) { if (Data.t1[i, j].Text == null) Data.t1[i,j].Text = "0"; Data.x[i, j] = Convert.ToDouble(Data.t1[i, j].Text); Data.npv[i, j] = Data.x[i, j] * System.Math.Pow(1.1, 1 + j); Data.sumnpv[i] += Data.npv[i, j]; } Data.t2 = new TextBox[Data.n, 6];// создаём двумерный масив текстбоксов for (h = 0; h < Data.n; h++) for (u = 0; u < 6; u++)// проходим по елементам масива { Data.t2[h, u] = new TextBox();//для каждого елемента массива создаем текстбокс Data.t2[h, u].Location = new Point(h * 60 + 121, u * 28 + 81);//привязываем расположение тексбоксов к индексам масива чтоб они не налаживались друг на друга Data.t2[h, u].Size = new Size(51, 20);//размеры текстбокса form3.panel2.Controls.Add(Data.t2[h, u]); //добавляем текстбоксы на панель /*Data.t2[h, 0].Text = Convert.ToString(Data.sumnpv[h]);*/ } form3.Show(); form3.Focus(); }
if (Data.t1[i, j].Text == null) Data.t1[i,j].Text = "0";
Решение задачи: «Object reference not set to an instance of an object»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication2 { public class Data { public static TextBox[,] t1 { get; set; } public static TextBox[,] t2 { get; set; } public static TextBox[,] t3 { get; set; } public static int n { get; set; } public static int m { get; set; } public static double[,] x { get; set; } public static double[,] irr { get; set; } public static double[,] npv { get; set; } public static double[] sumnpv { get; set; } } static class Program { /// <summary> /// Главная точка входа для приложения. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д