DataGridView是错误的选择吗?
本文关键字:错误的选择 DataGridView | 更新日期: 2023-09-27 18:09:28
我是c#和Windows窗体的新手,所以请耐心等待。我正在制作一个Windows窗体,让您加载视频,加载脚本,然后制作字幕。我想显示一个表,其中的数据将自动填充,因为他们标记标题的开始和结束,并选择文本,将是可编辑的。最后,我希望将所有数据保存到xml文件中。一个DataGridView ui似乎正是我想要的,但我不能弄清楚后端如何从DataGridView(最好是在一个数据集)中获取数据。
我现在正在考虑使用具有多列的ListView
。如有任何建议,不胜感激
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能够从对象中检索数据以供显示。
下面是一个小程序,它将把您从数据源填充到数组中的类保存到您在参数中指定的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;
}