C # (Windows Forms) - панель с автопрокруткой мест, сгенерированных объектов случайно дальше - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть панель с включенной автопрокруткой .

Теперь вот мой довольно интересный аномалия:

Если я добавлю один из моих объектов inputForm кПанель panel первые три-четыре всегда располагаются правильно.Но если я сейчас сделаю паузу на секунду, создав объекты на панели, расстояние между вновь созданным и последним созданным становится очень высоким.Я проверил свои значения, но они в порядке и работают просто отлично.Я хочу, чтобы объекты создавались вдоль оси X.

Whats is that distance? Where is it comming from?

И это должно выглядеть так ...

Looks better

Как видите, между этими двумя объектами и следующим слишком много места.

Мой код выглядит так:

Этот метод добавляет объект на панель.

        public void AddInputField(Panel panel)
    {
        panel.VerticalScroll.Enabled = true;
        //New Instance
        inputField inputField = new inputField(this.Index, this.Max);

        //Check if first run
        if (this.Index == 0)
        {
            panel.Controls.Add(inputField.getInputField());
        }
        //do every other run
        else
        {
            this.X = this.X + 170;
            panel.Controls.Add(inputField.getInputField(this.X));
        }
        this.inputFields.Add(inputField);

        //Add One
        this.Index++;
        this.Max++;
    }

И здесь я устанавливаю расстояние для следующего объекта:

        public Panel getInputField(int X)
    {
        this.mainFrame.Location = new Point(X,0);
        return this.mainFrame;
    }

И вот как я создал Panel внутри своего класса Object:

        //Main Frame
        this.mainFrame = new Panel();
        this.mainFrame.AutoScroll = true;
        this.mainFrame.Name = "MainFrame" + Counter;
        this.mainFrame.BackColor = SystemColors.Control;
        this.mainFrame.Size = new Size(164,111);
        this.mainFrame.Margin = defaultMargin;
        this.mainFrame.BorderStyle = BorderStyle.FixedSingle;

Класс inputField объявлен так:

    class inputField
{

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

...