问题描述
它在同一个类中工作:
public void Form1_Load(object sender,EventArgs e)
{
string[] columns = { "Column A","Column B" };
DataTable table = new DataTable();
foreach (string column in columns)
{
table.Columns.Add(column,typeof(string));
}
dataGridView1.DataSource = table;
}
public void AddRow(string[] row)
{
DataTable dt = dataGridView1.DataSource as DataTable;
dt.Rows.Add(row);
dataGridView1.DataSource = dt;
}
private void buttonAddRows_Click(object sender,EventArgs e)
{
string[] results = new string[] { "result 1","result 2" };
AddRow(results);
}
但是,如果我从另一个类调用 AddRow(),则会引发异常:
System.NullReferenceException:“对象引用未设置为对象的实例。”
dt为空。
class Test
{
public void CreateRows()
{
string[] results = new string[] { "result 1","result 2" };
Form1 form1 = new Form1();
form1.AddRow(results);
}
解决方法
谢谢,这是解决方案之一:
private static Form1 instance;
public static Form1 ReturnInstance()
{
return instance;
}
public Form1()
{
InitializeComponent();
instance = this;
}
public void Form1_Load(object sender,EventArgs e)
{
string[] columns = { "Column A","Column B" };
foreach (string column in columns)
{
dataGridView1.Columns.Add(column,column);
}
}
public void AddRow(string[] row)
{
dataGridView1.Rows.Add(row);
}
public class Test
{
public void CreateRows()
{
string[] results = new string[] { "result 1","result 2" };
Form1 form1 = Form1.ReturnInstance();
form1.AddRow(results);
}
}
现在我正在寻找一种解决方案,该方法如何使用异步方法添加行