DataGridView是错误的选择吗?

时间:2014-06-20 13:08:33

标签: c# winforms datagridview dataset

我是C#和Windows Forms的新手,所以请耐心等待。我正在制作一个Windows窗体,可以加载视频,加载脚本,然后制作字幕。我想显示一个表格,其中数据将自动填充,因为它们标记标题的开头和结尾并选择文本并且可以编辑。最后,我想将所有数据保存到xml文件中。 DataGridView UI方式看起来就像我想要的那样,但是我无法弄清楚如何从DataGridView中获取数据(最好是在数据集中)。

我现在正在考虑使用包含多列的ListView。任何建议将不胜感激

2 个答案:

答案 0 :(得分: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能够从对象中检索数据以供显示。

答案 1 :(得分: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;

}