2014-06-20 65 views
0

我是C#和Windows窗體的新手,請耐心等待。我製作的Windows窗體可以讓你加載視頻,加載腳本,然後製作標題。我想顯示一個表格,數據將在標記標題的開始和結束以及選擇文本時自動填充,並且是可編輯的。最後,我想將所有數據保存到一個xml文件。一個DataGridView用戶界面智能似乎正是我想要的,但我無法弄清楚後端如何從DataGridView中獲取數據(最好在數據集中)。是DataGridView錯誤的選擇?

我現在正在考慮使用帶有多個列的ListView。任何意見,將不勝感激

+0

的DataGridView可能是更容易使用,因爲這樣的事實,它是直接「可轉換」到DataSet :) – VisualBean

回答

2

的DataGridView應該只是罰款爲應用程序,你可以很容易地通過做檢索任何數據保存到它:

dgvThing.DataSource; 

將包含任何類型的已保存到Datagridview(列表,數組等)。

例子:

public class SuperFunObject { 
     public TimeSpan start { get; set; } 
     public TimeSpan end { get; set; } 
     public string selectedText { get; set; } 
     public SuperFunObject(Timespan a, Timespan b, string text) { 
      start = a; 
      end = b; 
      selectedText = text; 
     } 
    } 
    List<SuperFunObject> funList = new List<SuperFunObject>(); 
    funList.Add(new SuperFunObject(TimeSpan.FromSeconds(0.0),TimeSpan.FromSeconds(20.0),"Hello")); 
    dgvThing.DataSource = funList; 
    ... 
    ... 
    //retrive your list 
    List<SuperFunObject> getData = ((List<SuperFunObject>)dgvThing.DataSource); 

我希望的例子有點幫助。注意,訪問器(get,set)的原因是Datagridview能夠從對象中檢索數據以供顯示。

+0

你打我給它 – VisualBean

+0

@AlexInTime - 他擊敗你說你要說什麼而你甚至沒有注意過。悲情。 –

+0

這是我最初嘗試的,但它只是返回null –

0

這裏有一個小小的例子,它可以將一個類從數據源中填充到一個數組中,並將其保存到您在參數中指定的XML文件路徑中。

public static bool SaveXMLObjectToFile(object IncomingXMLObject, string Path) 
{ 

string xmlString = null; 
File TheFileIn = default(File); 
string docname = null; 
StreamWriter WriteAFile = default(StreamWriter); 
string filelocation = null; 
//Dim filelocation As String 

System.IO.MemoryStream MemStream = new System.IO.MemoryStream(); 
System.Xml.Serialization.XmlSerializer Ser = default(System.Xml.Serialization.XmlSerializer); 
System.Text.Encoding encodingvalue = System.Text.UTF8Encoding.UTF8; 
System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(MemStream, encodingvalue); 

bool Result = false; 

try { 
    File.Delete(Path); 
    Ser = new System.Xml.Serialization.XmlSerializer(IncomingXMLObject.GetType); 
    Ser.Serialize(writer, IncomingXMLObject); 
    MemStream = writer.BaseStream; 
    //as system.io.memorystream 
    xmlString = UTF8ByteArrayToString(MemStream.ToArray()); 
    //Will Not Convert Byte Array from Diagram 
    filelocation = Path; 
    WriteAFile = TheFileIn.AppendText(filelocation); 
    WriteAFile.Write(xmlString); 
    WriteAFile.Close(); 
    Result = true; 
} catch (Exception e) { 
    Result = false; 
} 

return Result; 

}