当我在面板小部件中动态添加新小部件时,自动滚动会影响坐标。 WinForms

问题描述 投票:0回答:1

在我的 WinForms 项目的主面板中添加新的小部件时,我遇到了一个意想不到的问题。我编写了自己的类,该类描述了一个自定义面板,该面板最终集成在第一个面板中,并放置在等于另一个面板的 (Bottom + 2) 的 Y 坐标上。这个地方在我的静态变量中。一切都很好,正如我所期望的那样。当我单击“底部+”时,我的面板出现在第一个面板上(图1)。 Everything is OK 但是,如果我单击“按钮+”以便出现滚动线,我会将其向下移动并再次单击“按钮+”。下一个面板不仅按照计划放置 (Bottom + 2),而且根据 ScrollButton 与其中性点的距离添加了一些像素。图片(2) This space between my Panels is getting bigger than far than I move the scrollButton

我的班级代码

internal class AddPanel
    {
        const int coordX = 3;
        static int coordY = 4;
        static int num;

        TextBox TBnum, TBquest, TBansw; // for each textbox from our panel
        Panel newPanel; // the panel proper

        public AddPanel(Panel MainPanel, params Button[] buttons)
        {
            newPanel = new Panel();
            TBnum = new TextBox();
            TBquest = new TextBox();
            TBansw = new TextBox();

            newPanel.Location = new Point(coordX, coordY); //TODO: Change coords
            newPanel.Size = new Size(350, 88);
            newPanel.Name = "MyPanel" + Convert.ToString(num);

            TBnum.Location = new Point(3, 3);
            TBnum.Name = "MyTBNum" + Convert.ToString(num);
            TBnum.Size = new Size(27, 23);

            TBquest.Location = new Point(50, 3);
            TBquest.Name = "MyTBquest" + Convert.ToString(num);
            TBquest.Size = new Size(287, 23);

            TBansw.Location = new Point(50, 32);
            TBansw.Name = "MyTBansw" + Convert.ToString(num);
            TBansw.Multiline = true;
            TBansw.Size = new Size(287, 47);


            if (num == 0)
            {
                TBnum.PlaceholderText = "1";
                TBquest.PlaceholderText = "Вопрос. Напр: Адрес приемной комиссии?";
                TBansw.PlaceholderText = "Ответ на вопрос";

            }
            else TBnum.Text = Convert.ToString(num + 1);

            //foreach (Button btn in buttons)
                //btn.Location = new Point(btn.Location.X, btn.Location.Y + 100);

            newPanel.Controls.Add(TBnum);
            newPanel.Controls.Add(TBquest);
            newPanel.Controls.Add(TBansw);
            newPanel.BorderStyle = BorderStyle.FixedSingle;
            MainPanel.Controls.Add(newPanel);

            coordY = newPanel.Bottom + 2 ;
            num++;

        }

        static AddPanel()
        {
            num = 0;
        }
    }

按钮代码:

new AddPanel(MainScrollPanel, UpButton, DownButton);

我该如何解决这个问题。我尝试用谷歌搜索,但什么也没找到。

c# winforms autoscroll
1个回答
0
投票
MainScrollPanel.AutoScrollPosition = new Point(0, 0);

在创建新面板之前,我们可以将 ScrollLine 移动到中间位置。

© www.soinside.com 2019 - 2024. All rights reserved.