gpt4 book ai didi

c# - 当滚动为 'moved' 时,控件的设置位置似乎不起作用(c#,winforms)

转载 作者:太空狗 更新时间:2023-10-30 00:58:42 25 4
gpt4 key购买 nike

问题描述:

  • 创建一个“自定义控件”。将其属性 AutoScroll 设置为“true”。将其背景颜色更改为绿色。
  • 创建第二个“自定义控件”。将其背景颜色更改为红色。
  • 在主窗体上放置第一个自定义控件
  • 在代码中创建第二个控件的 20 个实例
  • 添加一个按钮并在按钮中:
    • 在代码中设置它们在循环中的位置,如 c.Location = new Point(0, y);
    • y += c.Height;
  • 运行应用。
  • 按下按钮
  • 滚动容器
  • 再次按下按钮,有人可以解释一下吗 为什么 0 不是容器表单的开头?!控件已移动...

在你回答之前:

1) 是的,事情需要这样

2) 下面的代码示例:

public partial class Form1 : Form
{
List<UserControl2> list;

public Form1()
{
InitializeComponent();
list = new List<UserControl2>();
for (int i = 0; i < 20; i++)
{
UserControl2 c = new UserControl2();
list.Add(c);
}
}

private void Form1_Load(object sender, EventArgs e)
{
foreach (UserControl2 c in list)
userControl11.Controls.Add(c);
}

private void button1_Click(object sender, EventArgs e)
{
int y = 0;
foreach (UserControl2 c in list)
{
c.Location = new Point(0, y);
y += c.Height;
}
}
}

最佳答案

因为Location给出控件左上角相对于其容器左上角的坐标.因此,当您向下滚动时,位置将会改变。

修复方法如下:

  private void button1_Click(object sender, EventArgs e)
{
int y = list[0].Location.Y;
foreach (UserControl2 c in list)
{
c.Location = new Point(0, y);
y += c.Height;
}
}

关于c# - 当滚动为 'moved' 时,控件的设置位置似乎不起作用(c#,winforms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com