C# 是否将数据保存到另一个类中创建的datatable?
我对c#相当陌生,对wpf也非常陌生,所以如果这是一个非常愚蠢的问题,请原谅我 我有三节课。这是我的程序结构 在MainWindow类中,应执行一些初始化步骤,其中之一是使用另一个类中的方法创建datatable:C# 是否将数据保存到另一个类中创建的datatable?,c#,wpf,class,C#,Wpf,Class,我对c#相当陌生,对wpf也非常陌生,所以如果这是一个非常愚蠢的问题,请原谅我 我有三节课。这是我的程序结构 在MainWindow类中,应执行一些初始化步骤,其中之一是使用另一个类中的方法创建datatable: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); savelabels
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
savelabels table = new savelabels();
table.createlabeltable();
//...some other stuff that works
}
}
此处是创建、填充和按需返回数据表的类:
public class savelabels
{
DataTable labelcoords = new DataTable();
public void createlabeltable()
{
DataColumn column;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Double");
column.ColumnName = "id";
labelcoords.Columns.Add(column);
}
public void saveposition(double x)
{
DataRow row = labelcoords.NewRow();
row["id"] = x;
labelcoords.Rows.Add(row);
}
public DataTable GetDataTable()
{
return labelcoords;
}
}
然后我有第三个类,其中有一个方法应该填充datatable:
public class getdata
{
public void filltable()
{
double x = 123;
savelabels ctable = new savelabels();
ctable.saveposition(x);
}
}
我想使用saveposition方法写入表中的值,以及getdata类中的其他方法。问题是,由于labelcoords表中没有“id”列,所以saveposition(x)方法也无法工作,因此我猜在MainWindow类中创建的表无法通过saveposition方法访问。如果您希望从另一个类实例访问类实例,您需要将实例传递给它。我没有看到您创建
getdata
的实例,因此我无法重构任何实例。但是,它类似于YourgetdataInstance.filltable(savelabels-mytable)
,在其中,您可以删除新实例的实例化,只需使用mytable.saveposition(x)
。由于该方法明确地要求某种结构,我倾向于采用simon在评论中提出的方法
但是,如果您想将
filltable
保存在一个单独的类中,可以提供一个如我所示的参数。如果不需要getdata
的实际实例,可以将其更改为static
类,以便直接调用它。为什么不将filltable方法移到savelabels类中呢?您的get data类没有对savelabels类的引用,因此它们不共享同一个DataTable实例。Thx,最后我通过简单地将所有内容移动到getdata类来修复它……在这种情况下,这似乎是最简单甚至最有效的方法。