c#中的刷新面板

本文关键字:刷新 | 更新日期: 2023-09-27 18:01:21

我正在做一些项目…当我添加一个用户时,有一个关于爱好的信息,其优点是支持向同一个人添加更多的爱好。

我正在考虑将我的信息分成几个用户控件,并在面板中动态地定位这些用户控件。

,当按下-add more-链接,它会建立一个新的控件(标签,文本框…),并调整包含它们的用户控件的大小。

它的工作,但问题是,当我按下-添加更多-包含它的用户控件调整大小。但是面板没有重新构建,所以用户控件不需要重新排列就可以在其他用户控件之上。

这是一个简单的用户控制代码,添加更多:

public partial class UserControl2 : UserControl
{
    public UserControl2()
    {
        InitializeComponent();
    }
    private void UserControl2_Load(object sender, EventArgs e)
    {
        this.Size = new Size(this.Size.Width , sss.Size.Height * 3);
    }
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        this.Size = new Size(this.Size.Width, sss.Size.Height * 6);
    }
}

和面板代码是定位时按下button1:

private void button1_Click(object sender, EventArgs e)
{
    UserControl1 x1 = new UserControl1();
    UserControl2 x2 = new UserControl2();
    UserControl3 x3 = new UserControl3();
    x1.Location = new Point(panel1.AutoScrollPosition.X , panel1.AutoScrollPosition.Y);
    x2.Location = new Point(panel1.AutoScrollPosition.X , panel1.AutoScrollPosition.Y + x1.Size.Height);
    x3.Location = new Point(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y + x1.Size.Height + x2.Size.Height);
    panel1.Controls.Add(x1);
    panel1.Controls.Add(x2);
    panel1.Controls.Add(x3);
} 

c#中的刷新面板

如果不锚定控件并增加窗口大小,则无法在不重叠的情况下增加控件的大小。

虽然表单设计器看起来很流畅,但所有内容都是使用固定的位置和大小创建的。如果在不考虑其他控件的情况下开始增加控件的大小,则该控件将被绘制在它们上面。

你应该考虑锚定你的控件和增加窗口大小,在合理的范围内,或者不是改变底层的大小,在面板和所需的位置添加控件,并启用面板的自动滚动。

private void button1_Click(object sender, EventArgs e)
{
    if (!panel1.AutoScroll) panel1.AutoScroll = true;
    for (int i = 0; i < 3; i++)
    {
        Textbox txt = new TextBox() { Location = new Point(3, (panel1.Controls.Count * 25) + 3 };
        panel1.Controls.Add(txt);
    }
} 

每次你点击按钮,它将添加3个新的文本框面板。您可以使用与此类似的模式,通过自己的控制来完成您正在寻找的内容。它还确保面板可以滚动,这样用户就可以在不调整面板或主表单大小的情况下向下浏览列表。

尝试:

查看此链接:

private void button1_Click(object sender, EventArgs e)
{
panel1.Controls.Clear();

//Then add your existing code below
serControl1 x1 = new UserControl1();
    UserControl2 x2 = new UserControl2();
    UserControl3 x3 = new UserControl3();
    x1.Location = new Point(panel1.AutoScrollPosition.X , panel1.AutoScrollPosition.Y);
    x2.Location = new Point(panel1.AutoScrollPosition.X , panel1.AutoScrollPosition.Y + x1.Size.Height);
    x3.Location = new Point(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y + x1.Size.Height + x2.Size.Height);
    panel1.Controls.Add(x1);
    panel1.Controls.Add(x2);
    panel1.Controls.Add(x3);
}