C#三态TreeView序列化 [英] C# Tri State TreeView Serialization

查看:61
本文介绍了C#三态TreeView序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在设计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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆