I want to be able to transfer values from one DataGridView in Form1 to another DataGridView in Form3. To do this I’ve chosen to filter them in 3 different variables which would be in classes so that i could access them later in Form3.
These are the classes: (I’ve had them as a single one with 3 variables already)
public class verify1
{
public static int[] CodUser { get; set; }
}
public class verify2
{
public static DateTime[] DataFim{ get; set; }
}
public class verify3
{
public static string[] Nome { get; set; }
}
Altho, when i am assigning values to the variables i get a NullReferenceException right in the first time the for runs.
This is the code i used to assign values:
int a = 0;
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
DateTime date = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value);
if (date <= DateTime.Now)
{
verify1.CodUser[a] = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].FormattedValue);
verify2.DataFim[a] = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].FormattedValue);
verify3.Nome[a] = Convert.ToString(dataGridView1.Rows[i].Cells[3].Value);
a++;
}
}
Now, what i don’t understand is why Visual Studio says the value is null. The exception happens in the following line:
verify1.CodUser[a] = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].FormattedValue);
(which is 17389) in the first place and won’t let me go further. I cant see why it’s returning null. By the way, the DataGridView is fully fulfilled with data.
Why is it returning null?
The auto-properties are automatically intialized to default value of the returning type.
You are dealing with reference type
Array. The defalt value for the reference type isnull.It’s better, in this case, avoid to have auto properties, but use ordinary ones.
Example:
I esplicitly used a
List<T>in this case, cause in moment of declaration you don’t know the excat size of array, and alsoo, according to the code provided, it can vary.EDIT
Can use it like this (in practice like you did before)
Hope this helps.