如何将所有 checkledistbox 项目导出到 windows 表单应用程序 c# 中的 Xml 文档

how to export all checkledistbox items to Xml document in windows form application c#

我无法仅在最后显示 xml 文档中的所有选中数据 选中的 Checkedlistbox 项目显示在 xml 我想 在 xml 中显示所有检查的数据请帮助我这样做..

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Xml;
    namespace GetDetails
     {
            public partial class Form1 : Form
      {

      public Form1()
      {
        InitializeComponent();

      }


    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

     private void button4_Click(object sender, EventArgs e)
     {
        // Create a new instance of FolderBrowserDialog.
        FolderBrowserDialog folderBrowserDlg = new FolderBrowserDialog();
        // A new folder button will display in FolderBrowserDialog.
        folderBrowserDlg.ShowNewFolderButton = true;
        //Show FolderBrowserDialog
        DialogResult dlgResult = folderBrowserDlg.ShowDialog();
        if (dlgResult.Equals(DialogResult.OK))
        {
            //Show selected folder path in textbox1.
            textBox1.Text = folderBrowserDlg.SelectedPath;
            //Browsing start from root folder.
            Environment.SpecialFolder rootFolder = 
               folderBrowserDlg.RootFolder;
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {

        FolderBrowserDialog fbd = new FolderBrowserDialog();
        if (fbd.ShowDialog() == DialogResult.OK)
        {
            if (!textBox1.Text.Equals(String.Empty))
            {
                if (System.IO.Directory.GetFiles(textBox1.Text).Length > 0)
                {
                    foreach (string file in 
                 System.IO.Directory.GetFiles(textBox1.Text))
                    {
                        //Add file in ListBox.
                        checkedListBox1.Items.Add(Path.GetFileName(file));
                    }
                }
                else
                {
                    checkedListBox1.Items.Add(String.Format("No files Found 
               at location: { 0}", textBox1.Text));
                }
            }
            /* 
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            if(fbd.ShowDialog() == DialogResult.OK)
             {
               checkedListBox1.Items.Clear();
                string[] files = Directory.GetFiles(fbd.SelectedPath);
                string[] dirs = Directory.GetDirectories(fbd.SelectedPath);

               foreach(string file in files)
                 {
                  checkedListBox1.Items.Add(Path.GetFileName(file));
                }
                foreach (string dir in dirs)
                {
                    checkedListBox1.Items.Add(Path.GetFileName(dir));
                }
            }*/

          }
      }

    private void checkedListBox1_SelectedIndexChanged(object sender, 
     EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
        XmlTextWriter xwriter = new XmlTextWriter("GetDetails.xml", 
        Encoding.Unicode);
        xwriter.WriteStartDocument();
        xwriter.WriteStartElement("XMLFILE");
        xwriter.WriteStartElement("file");
        xwriter.WriteString(textBox1.Text);
        xwriter.WriteEndElement();

            foreach (String item in checkedListBox1.SelectedItems)
            {
                xwriter.WriteStartElement("SelectedItems");
                xwriter.WriteString(item);
                xwriter.WriteEndElement();

                /*  for (int i = 0; i < 
            checkedListBox1.CheckedIndices.Count; i++)
                  {
                      //checkedListBox1.ClearSelected();

       checkedListBox1.Items.Add(checkedListBox1.CheckedIndices[i]);
                  }*/
            }
            xwriter.WriteEndElement();
            xwriter.WriteEndDocument();
            xwriter.Close();

        }


    private void button3_Click(object sender, EventArgs e)
    {
        this.Close();

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button5_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}


}
  only last selected Checkedlistbox item is displayed in xml i wanted to 
 display all checked data in xml please help me in doing this.. 

这最终变得非常简单。 checkedListBox1.Item[i] 是一个字符串值,显式转换允许它被加载到一个变量中。以下代码有效:

private void button2_Click(object sender, EventArgs e)
{
    string str="";
    for (int i = 0; i < checkedListBox1.Items.Count; i++)
    {
          if (checkedListBox1.GetItemChecked(i))
        {
            str += (string)checkedListBox1.Items[i];

        }
    }
     MessageBox.Show(str);
}

现在你得到了物品。您可以写入 XML 文件。

用于写入 XML DOC

System.IO.File.WriteAllText("GetDetails.xml", str);

了解更多信息。转到 Official Site

您的问题包含正确的代码,唯一需要更改的是使用 checkedListBox1.CheckedItems 而不是 checkedListBox1.SelectedItems

代码:

private void button2_Click(object sender, EventArgs e)
{
    XmlTextWriter xwriter = new XmlTextWriter("GetDetails.xml",  Encoding.Unicode);
    xwriter.WriteStartDocument();
    xwriter.WriteStartElement("XMLFILE");
    xwriter.WriteStartElement("file");
    xwriter.WriteString(textBox1.Text);
    xwriter.WriteEndElement();

    foreach (var item in checkedListBox1.CheckedItems)
    {
        xwriter.WriteStartElement("SelectedItems");
        xwriter.WriteString(item.ToString());
        xwriter.WriteEndElement();

    }
    xwriter.WriteEndElement();
    xwriter.WriteEndDocument();
    xwriter.Close();
}