我的無能使我在項目中不使用「乾淨」解決方案。我在一個類中得到了一個ADO數據集,並且需要在winforms和其他類之間共享它。爲了實現它,我將數據集作爲公衆成員。當我在項目早期階段時,我在互聯網上搜索了很多,但還沒有找到令人滿意的答案。但是現在我還有一些額外的時間,而且我的項目不是很大,我想做的對。任何提示?在分類之間共享數據集
坦克, 雷
我的無能使我在項目中不使用「乾淨」解決方案。我在一個類中得到了一個ADO數據集,並且需要在winforms和其他類之間共享它。爲了實現它,我將數據集作爲公衆成員。當我在項目早期階段時,我在互聯網上搜索了很多,但還沒有找到令人滿意的答案。但是現在我還有一些額外的時間,而且我的項目不是很大,我想做的對。任何提示?在分類之間共享數據集
坦克, 雷
嘗試回答非常通用quesiton:讀你寫的東西,我wolud說,這是perectly很好的解決方案,使您要在應用程序的不同部分acees一類的公共屬性。唯一的提示,我能想到的(僅僅因爲它沒有被指定,並不意味着它沒有以這種方式完成)在你的專用數據訪問類中有一個DataSet。
重複,這個問題太泛泛。也許如果你將某些更具體的事情細化,你將會得到更具體的幫助。
問候。
使用get,set accessor創建dataSet作爲屬性。 YOu可以使它成爲靜態的,所以它可以在不創建類(或形式)新引用的情況下使用。
例子:
public partial class Form1 : Form
{
public static DataSet myDataSet { get; set; }
public Form1()
{
InitializeComponent();
Class1 c1 = new Class1();
Class2 c2 = new Class2();
}
}
class Class1
{
public Class1()
{
//fill dataSet (add new table and some example rows):
DataTable table = new DataTable("table1");
table.Columns.Add("Column1", typeof(string));
table.Rows.Add("item 1");
table.Rows.Add("item 2");
Form1.myDataSet = new DataSet();
Form1.myDataSet.Tables.Add(table);
}
}
class Class2
{
public Class2()
{
//show dataSet results:
StringBuilder sb = new StringBuilder();
foreach (DataRow dr in Form1.myDataSet.Tables["table1"].Rows)
{
sb.AppendLine(dr[0].ToString());
}
//show:
System.Windows.Forms.MessageBox.Show(sb.ToString());
}
}
感謝Mitja,事實上,將數據集標記爲靜態是一個解決方案:) – Ray
它完全不清楚你想要達到的目標。這是什麼意思「共享winforms和其他類的數據集」? –
我很抱歉,我會盡量做得更具體。我有一個類實現了一些數據庫相關的操作,並有一個DataSet成員來保存數據。我希望這個DataSet成爲我項目中其他類的唯一數據源。爲了避免浪費系統資源,我希望儘可能多地訪問其他類別。這是否更具描述性? – Ray