3

XML から値を読み込む 2 つの配列リストがあり、特定のタグをリストボックスに追加します。リストボックスからタグを別のリストボックスに転送しますが、array1 のリストボックスで選択した項目の値を取得して array2 に移動しようとするときに問題が発生します。arraylist1 の現在のインデックスに保存されているすべてのものを arraylist2 に移動するにはどうすればよいですか?

//初期化

    int moduleCount = 0;
    bool isFull = false;
    ArrayList chosen= new ArrayList();
    ArrayList module = new ArrayList();
    String name;
    String code;
    String info;
    String semester;
    String tSlot;
    String lSlot;
    String preReq;
    string xmlDirectory = Directory.GetCurrentDirectory();
    public Form1()
    {
        InitializeComponent();
        createBox();
        //List<Array> a=new List<Array>();            

        // Console.WriteLine(module.ToString());
       // getXML();
    }

    private void createBox()
    {
        String workingDir = Directory.GetCurrentDirectory();

        XmlTextReader textReader = new XmlTextReader(workingDir + @"\XML.xml");
        textReader.Read();
        XmlNodeType type;

        while (textReader.Read())
        {
            textReader.MoveToElement();
            type = textReader.NodeType;
            if (type == XmlNodeType.Element)
            {
                if (textReader.Name == "Code")
                {
                    textReader.Read();
                    code = textReader.Value;
                    Console.WriteLine(code);
                }
                if (textReader.Name == "Name")
                {
                    textReader.Read();
                    name = textReader.Value;
                    //selectionBox.Items.Add(name);
                    Console.WriteLine(name);
                }
                if (textReader.Name == "Semester")
                {
                    textReader.Read();
                    semester = textReader.Value;
                    Console.WriteLine(semester);
                }
                if (textReader.Name == "Prerequisite")
                {
                    textReader.Read();
                    preReq = textReader.Value;
                    Console.WriteLine(code);
                }
                if (textReader.Name == "LectureSlot")
                {
                    textReader.Read();
                    lSlot = textReader.Value;
                    Console.WriteLine(lSlot);
                }
                if (textReader.Name == "TutorialSlot")
                {
                    textReader.Read();
                    tSlot = textReader.Value;
                    Console.WriteLine(tSlot);
                }
                if (textReader.Name == "Info")
                {
                    textReader.Read();
                    info = textReader.Value;
                    Console.WriteLine(info);
                    module.Add(new Modules(code, name, semester, tSlot, lSlot, info, preReq));
                }
            }

            //Console.WriteLine(module);
        }
        foreach (object o in module)
        {
            Modules m = (Modules)o;
            //String hold = m.mName;
            selectionBox.Items.Add(m.mName);
        }
        textReader.Close();

// あるリストボックスから別のリストボックスに移動するためのボタン イベント ハンドラ

if (selectionBox.SelectedItem != null)
        {
            chosenBox.Items.Add(selectionBox.SelectedItem);
            selectionBox.Items.Remove(selectionBox.SelectedItem);
            chosen.Add(selectionBox.SelectedItem);
            errorLabel.Text = "";
            moduleCount++;
            if (moduleCount >= 8)
            {
                isFull = true;
                errorLabel.Text = "You have selected 8 Modules please fill the fields and submit";
                selectionBox.Enabled = false;
            }
        }
        else
        {
            errorLabel.Text = "Please select a module";
        }

        numberChosen.Text = String.Format(moduleCount.ToString());

//XML に書き込みます

 foreach (object o in chosen)
            {
                Modules m = (Modules)o;
                if (m.mPreReq != "None")
                {   
                    MessageBox.Show("You must chose module " + m.mPreReq);
                    //errorLabel.Text = "You must chose module " + m.mPreReq;
                    errorLabel.Text = "There is a prereq course";
                    req = true;
                }
            }
4

1 に答える 1