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);
}
如果不锚定控件并增加窗口大小,则无法在不重叠的情况下增加控件的大小。
虽然表单设计器看起来很流畅,但所有内容都是使用固定的位置和大小创建的。如果在不考虑其他控件的情况下开始增加控件的大小,则该控件将被绘制在它们上面。
你应该考虑锚定你的控件和增加窗口大小,在合理的范围内,或者不是改变底层的大小,在面板和所需的位置添加控件,并启用面板的自动滚动。
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);
}