private void ChoosePuzzleHandler(object sender, EventArgs e)
        {
            ChoosePuzzle chPuzzle = new ChoosePuzzle();
            DialogResult result   = chPuzzle.ShowDialog();

            if (result == DialogResult.OK)
            {
                SerializePuzzleClass spc = chPuzzle.selectedPuzzle;
                gameMode = GameMode.PlayMode;

                n      = spc.Height;
                m      = spc.Width;
                WinSeq = new FieldStat[n, m];
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < spc.wseq[i].Length; j++)
                    {
                        WinSeq[i, spc.wseq[i][j]] = FieldStat.Filled;
                    }
                }
                Point centre = new Point(this.Width / 2, this.Height / 2);
                CreateLayoutPanel(centre);
                CreateButtons();
                CreateLebels(centre);
            }
        }
        private void LoadPuzzleHandler(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Filter           = "XML files (*.xml)|*.xml";
            fileDialog.RestoreDirectory = true;

            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                FileStream           fs  = new FileStream(fileDialog.FileName, FileMode.Open);
                XmlSerializer        xs  = new XmlSerializer(typeof(SerializePuzzleClass));
                SerializePuzzleClass spc = (SerializePuzzleClass)xs.Deserialize(fs);
                fs.Close();
                gameMode = GameMode.PlayMode;
                n        = spc.Height;
                m        = spc.Width;
                WinSeq   = new FieldStat[n, m];
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < spc.wseq[i].Length; j++)
                    {
                        WinSeq[i, spc.wseq[i][j]] = FieldStat.Filled;
                    }
                }
                Point centre = new Point(this.Width / 2, this.Height / 2);
                CreateLayoutPanel(centre);
                CreateButtons();
                CreateLebels(centre);
            }
        }
 private void loadPuzzle_Click(object sender, EventArgs e)
 {
     foreach (ListViewItem item in listView1.SelectedItems)
     {
         foreach (var puzzle in PuzzlesList)
         {
             if (item.Text == puzzle.Title)
             {
                 selectedPuzzle = puzzle;
                 DialogResult   = DialogResult.OK;
                 Close();
             }
         }
     }
 }
        private void Refresh_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length != 0)
            {
                listView1.Items.Clear();
                foreach (string fpath in Directory.GetFiles(textBox1.Text, "*.xml"))
                {
                    FileStream           fs  = new FileStream(fpath, FileMode.Open);
                    XmlSerializer        xs  = new XmlSerializer(typeof(SerializePuzzleClass));
                    SerializePuzzleClass spc = (SerializePuzzleClass)xs.Deserialize(fs);
                    fs.Close();

                    PuzzlesList.Add(spc);

                    ListViewItem newItem = new ListViewItem(new[] { spc.Title, spc.Width.ToString(), spc.Height.ToString(), spc.Difficulty });
                    listView1.Items.Add(newItem);
                }
            }
        }
        private void ChooseDirectory_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folderBrowser = new FolderBrowserDialog();

            if (folderBrowser.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = folderBrowser.SelectedPath;
                if (textBox1.Text.Length != 0)
                {
                    foreach (string fpath in Directory.GetFiles(textBox1.Text, "*.xml"))
                    {
                        FileStream           fs  = new FileStream(fpath, FileMode.Open);
                        XmlSerializer        xs  = new XmlSerializer(typeof(SerializePuzzleClass));
                        SerializePuzzleClass spc = (SerializePuzzleClass)xs.Deserialize(fs);
                        fs.Close();

                        PuzzlesList.Add(spc);

                        ListViewItem newItem = new ListViewItem(new[] { spc.Title, spc.Width.ToString(), spc.Height.ToString(), spc.Difficulty });
                        listView1.Items.Add(newItem);
                    }
                }
            }
        }
        private void SaveButtonClick(object sender, EventArgs e)
        {
            SaveFileDialog saveFile = new SaveFileDialog();

            saveFile.Filter = "XML files (*.xml)|*.xml";

            saveFile.RestoreDirectory = true;

            if (saveFile.ShowDialog() == DialogResult.OK)
            {
                // xml serialization of array of points
                SerializePuzzleClass serializePuzzle = new SerializePuzzleClass();
                serializePuzzle.Difficulty = diff.Text;
                serializePuzzle.Height     = n;
                serializePuzzle.Width      = m;
                serializePuzzle.Title      = title.Text;
                serializePuzzle.wseq       = new int[n][];
                List <int> list = new List <int>();
                for (int i = 0; i < n; i++)
                {
                    list.Clear();
                    for (int j = 0; j < m; j++)
                    {
                        if (fieldstat[i, j] == FieldStat.Filled)
                        {
                            list.Add(j);
                        }
                    }
                    serializePuzzle.wseq[i] = list.ToArray();
                }
                var           fs = new FileStream(saveFile.FileName, FileMode.Create);
                XmlSerializer xs = new XmlSerializer(typeof(SerializePuzzleClass));
                xs.Serialize(fs, serializePuzzle);
                fs.Close();
            }
        }