2011-07-14 127 views
-1

我的無能使我在項目中不使用「乾淨」解決方案。我在一個類中得到了一個ADO數據集,並且需要在winforms和其他類之間共享它。爲了實現它,我將數據集作爲公衆成員。當我在項目早期階段時,我在互聯網上搜索了很多,但還沒有找到令人滿意的答案。但是現在我還有一些額外的時間,而且我的項目不是很大,我想做的對。任何提示?在分類之間共享數據集

坦克, 雷

+0

它完全不清楚你想要達到的目標。這是什麼意思「共享winforms和其他類的數據集」? –

+0

我很抱歉,我會盡量做得更具體。我有一個類實現了一些數據庫相關的操作,並有一個DataSet成員來保存數據。我希望這個DataSet成爲我項目中其他類的唯一數據源。爲了避免浪費系統資源,我希望儘可能多地訪問其他類別。這是否更具描述性? – Ray

回答

1

嘗試回答非常通用quesiton:讀你寫的東西,我wolud說,這是perectly很好的解決方案,使您要在應用程序的不同部分acees一類的公共屬性。唯一的提示,我能想到的(僅僅因爲它沒有被指定,並不意味着它沒有以這種方式完成)在你的專用數據訪問類中有一個DataSet。

重複,這個問題太泛泛。也許如果你將某些更具體的事情細化,你將會得到更具體的幫助。

問候。

0

使用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()); 
    } 
} 
+0

感謝Mitja,事實上,將數據集標記爲靜態是一個解決方案:) – Ray