C#三态TreeView序列化 [英] C# Tri State TreeView Serialization
问题描述
我在设计Tri State TreeView时,为其创建了要序列化的xml文件.我创建了xsd schmea,然后为该架构生成了我的类(workflow.xml-> workflow.xsd-> workflow.cs)
我想在xml值"1"中解析或"0"是否选中了来自Tri State的框
我的代码如下所示:
(WorkflowModulSplitAnalizaSplit()和WorkflowModulCapturaPrelucrareCaptura()是在flow.cs中生成的类)
I have im my design a Tri State TreeView for which I create a xml file to serialize. I create my xsd schmea and then i have generated my class for that schema (workflow.xml -> workflow.xsd -> workflow.cs)
I want to parse in xml values "1" or "0" if a box from Tri State is checked or not
My code looks like that:
( WorkflowModulSplitAnalizaSplit() and WorkflowModulCapturaPrelucrareCaptura() are classes generated in workflow.cs )
私有void WriteXMLFileUsingValuesFromNodes(string filenamexml)
{
WorkflowModulSplitAnalizaSplit mc_s = new WorkflowModulSplitAnalizaSplit();
如果(triStateTreeView1.GetChecked(triStateTreeView1.Nodes [0] .Nodes [0] .Nodes [0] .Nodes [0])== TriStateTreeView.CheckState.Checked)
{
] mc_s.M0_RevertSnapshot = byte.Parse("1");
}
其他
{
] mc_s.M0_RevertSnapshot = byte.Parse("0");
}
如果(triStateTreeView1.GetChecked(triStateTreeView1.Nodes [0] .Nodes [0] .Nodes [0] .Nodes [1])== TriStateTreeView.CheckState.Checked)
{
] mc_s.M0_PowerOnVM = byte.Parse("1");
}
其他
{
] mc_s.M0_PowerOnVM = byte.Parse("0");
}
XmlSerializer xs_s =新的XmlSerializer(typeof(WorkflowModulCapturaPrelucrareCaptura));
FileStream fs_s = new FileStream(@``C:\ Users \ SmartAdm \ Documents \ visual studio 2012 \ Projects \ Workflow_Robo \ Workflow_Robo \ workflow.xml'',FileMode.Create);
xs_s.Serialize(fs_s,mc_s);
fs_s.Close();
//================================================ ==========================================
WorkflowModulCapturaPrelucrareCaptura mc = new WorkflowModulCapturaPrelucrareCaptura();
如果(triStateTreeView1.GetChecked(triStateTreeView1.Nodes [0] .Nodes [1] .Nodes [1] .Nodes [12])== TriStateTreeView.CheckState.Checked)
{
mc.M3_CopyResultonserver = byte.Parse("1");
}
其他
{
mc.M3_CopyResultonserver = byte.Parse("0");
}
如果(triStateTreeView1.GetChecked(triStateTreeView1.Nodes [0] .Nodes [1] .Nodes [1] .Nodes [0])== TriStateTreeView.CheckState.Checked)
{
mc.M3_RevertSnapshot = byte.Parse("1");
}
其他
{
mc.M3_RevertSnapshot = byte.Parse("0");
}
XmlSerializer xs =新的XmlSerializer(typeof(WorkflowModulCapturaPrelucrareCaptura));
FileStream fs = new FileStream(@C:\ Users \ SmartAdm \ Desktop \ Workflow_Robo \ Workflow_Robo \ workflow.xml,FileMode.Create);
xs.Serialize(fs,mc);
fs.Close();
}
private void button1_Click(对象发送者,EventArgs e)
{
saveFileDialog1.ShowDialog();
this.Refresh();
}
私有void saveFileDialog1_FileOk(对象发送者,CancelEventArgs e)
{
字符串名称= saveFileDialog1.FileName;
WriteXMLFileUsingValuesFromNodes(name);
}
它仅从xml写入一个节点,而丢失其他节点.这是我可以修改代码的一种方式,以便它将代码从xml写入所有节点.
非常感谢你!
private void WriteXMLFileUsingValuesFromNodes(string filenamexml)
{
WorkflowModulSplitAnalizaSplit mc_s = new WorkflowModulSplitAnalizaSplit();
if (triStateTreeView1.GetChecked(triStateTreeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0]) == TriStateTreeView.CheckState.Checked)
{
mc_s.M0_RevertSnapshot = byte.Parse("1");
}
else
{
mc_s.M0_RevertSnapshot = byte.Parse("0");
}
if (triStateTreeView1.GetChecked(triStateTreeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[1]) == TriStateTreeView.CheckState.Checked)
{
mc_s.M0_PowerOnVM = byte.Parse("1");
}
else
{
mc_s.M0_PowerOnVM = byte.Parse("0");
}
XmlSerializer xs_s = new XmlSerializer(typeof(WorkflowModulCapturaPrelucrareCaptura));
FileStream fs_s = new FileStream(@"C:\Users\SmartAdm\Documents\visual studio 2012\Projects\Workflow_Robo\Workflow_Robo\workflow.xml", FileMode.Create);
xs_s.Serialize(fs_s, mc_s);
fs_s.Close();
//=============================================================================================
WorkflowModulCapturaPrelucrareCaptura mc = new WorkflowModulCapturaPrelucrareCaptura();
if (triStateTreeView1.GetChecked(triStateTreeView1.Nodes[0].Nodes[1].Nodes[1].Nodes[12]) == TriStateTreeView.CheckState.Checked)
{
mc.M3_CopyResultonserver = byte.Parse("1");
}
else
{
mc.M3_CopyResultonserver = byte.Parse("0");
}
if (triStateTreeView1.GetChecked(triStateTreeView1.Nodes[0].Nodes[1].Nodes[1].Nodes[0]) == TriStateTreeView.CheckState.Checked)
{
mc.M3_RevertSnapshot = byte.Parse("1");
}
else
{
mc.M3_RevertSnapshot = byte.Parse("0");
}
XmlSerializer xs = new XmlSerializer(typeof(WorkflowModulCapturaPrelucrareCaptura));
FileStream fs = new FileStream(@"C:\Users\SmartAdm\Desktop\Workflow_Robo\Workflow_Robo\workflow.xml", FileMode.Create);
xs.Serialize(fs, mc);
fs.Close();
}
private void button1_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
this.Refresh();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string name = saveFileDialog1.FileName;
WriteXMLFileUsingValuesFromNodes(name);
}
It only writes one node from xml and I lose the other nodes. It is a way in which I can adapt my code so it will write in all nodes from xml.
Thank you very much!
推荐答案
Dali_B
Hi Dali_B,
欢迎使用MSDN论坛支持.
Welcome to MSDN Forum Support.
我们正在对此问题进行研究.我们可能需要一些时间才能回复您.
We're doing research on this issue. It might take some time before we get back to you.
真诚的
贾森·王(Jason Wang)
Jason Wang
这篇关于C#三态TreeView序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!