Member 12739829 Ответов: 1

Сохранение элементов управления flowlayoutpanel (т. е. меток) при закрытии пользователем приложения


Мне нужно сохранить расположение меток, когда пользователь закрывается, я думаю, что мне нужно сделать его сериализуемым или сохранить что-то в XML-файл, но не могу понять, как это сделать.

метки могут быть перемещены из одной FlowLayoutPanel в другую с помощью оператора if, а затем методов add/remove.

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Xml;
using System.IO;
using System.Xml.Serialization;
using System.Data.SqlClient;





namespace test999
{
    public partial class Form1 : Form

    {


        public Form1()
        {
            InitializeComponent();
        }

        int shrewsbutyTotal;
        int donningtonTotal;
        int margin = 10;
        Point move;




        private void Form1_Load(object sender, EventArgs e)
        {


            labelBackgroundColour();
            flowLayoutPanel1.BorderStyle = BorderStyle.FixedSingle;
            flowLayoutPanel2.BorderStyle = BorderStyle.FixedSingle;
            makeMoveable();
            updateTotals();

            

        }
        void updateTotals()
        {
            shrewsbutyTotal = flowLayoutPanel1.Controls.Count;
            donningtonTotal = flowLayoutPanel2.Controls.Count;
            lbl_total_shrewsbury.Text = "Shrewsbury Vehicle Count: " + shrewsbutyTotal.ToString();
            lbl_total_donnington.Text = "Donnington Vehicle Count: " + donningtonTotal.ToString();
        }



        void labelMouseDown(object sender, MouseEventArgs e)
        {
            Disableflowsnap();
            flowLayoutPanel1.Cursor = Cursors.Hand;
            move = e.Location;

        }
        void labelMouseMove(object sender, MouseEventArgs e)
        {
            Control o = (Control)sender;
            if (e.Button == MouseButtons.Left)
            {
                o.Left += e.X - move.X;
                o.Top += e.Y - move.Y;

            }
        }
        void lableMouseUp(object sender, MouseEventArgs e)
        {

            flowLayoutPanel1.Cursor = Cursors.Default;
            foreach (Label l in flowLayoutPanel1.Controls)
            {
                if ((flowLayoutPanel1.Location.X + l.Right) > flowLayoutPanel1.Right)
                {

                    flowLayoutPanel1.Controls.Remove(l);
                    flowLayoutPanel2.Controls.Add(l);


                    updateTotals();
                }
            }
            foreach (Label l in flowLayoutPanel2.Controls)
            {
                if ((flowLayoutPanel2.Location.X + l.Left < flowLayoutPanel2.Left))
                {
                    flowLayoutPanel2.Controls.Remove(l);
                    flowLayoutPanel1.Controls.Add(l);


                    updateTotals();
                }
            }
            EnableFlowSnap();


        }





        void labelBackgroundColour()
        {

            foreach (Label l in flowLayoutPanel1.Controls)
            {
                l.BackColor = Color.Yellow;

            }
            foreach (Label l in flowLayoutPanel2.Controls)
            {
                l.BackColor = Color.Yellow;

            }
        }
        void makeMoveable()
        {
            foreach (Label l in flowLayoutPanel1.Controls)
            {
                l.MouseDown += new MouseEventHandler(labelMouseDown);
                l.MouseMove += new MouseEventHandler(labelMouseMove);
                l.MouseUp += new MouseEventHandler(lableMouseUp);
            }
            foreach (Label l in flowLayoutPanel2.Controls)
            {
                l.MouseDown += new MouseEventHandler(labelMouseDown);
                l.MouseMove += new MouseEventHandler(labelMouseMove);
                l.MouseUp += new MouseEventHandler(lableMouseUp);
            }
        }
        void Disableflowsnap()
        {
            foreach (FlowLayoutPanel flp in Controls.OfType


Что я уже пробовал:

сохранение в xml, создание сериализуемого класса

1 Ответов

Рейтинг:
0

Garth J Lancaster

Я бы посмотрел на использование этого Более простые настройки .NET[^]