关于C# panel 添加lable问题 -- 明确X和Y 位置错误

具体情况是 panel初始化后,通过点击按钮添加发现后,与具体存放位置不符,遂检查传入的X和Y坐标 发现没有问题后,再次检查其TOP和Height也没出错。

csharp 复制代码
  Label lbl = new Label();
  lbl.Text = labelCount.ToString();
  lbl.AutoSize = false;
  lbl.Size = new Size(30, 22);
  lbl.Name = "lbl" + labelCount.ToString();
  int intX = 25 + int.Parse((labelCount - 1).ToString()) % 5 * 105;
  int intY = 25 + int.Parse((labelCount - 1).ToString()) / 5 * 35;
  lbl.Location = new Point(intX, intY);

最后发现是相对位置出现问题,lbl.Location存放位置 是根据你当前的panel左上角定位,也就说

如果你移动了panel,lbl存放的位置就会发生变化,所以解决方法就是 减去相对位移就可以解决了

csharp 复制代码
// 关键:加上当前滚动偏移
scrollPos = pl.AutoScrollPosition;
actualLocation = new Point(intX + scrollPos.X, intY + scrollPos.Y);
lbl.Location = actualLocation;
pl.Controls.Add(lbl);

如图所示:

相关推荐
_阿南_4 小时前
Android文件读写和分享总结
android
咖啡八杯5 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式
用户1285261160213 小时前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java
通玄13 小时前
Jetpack Compose 入门系列(六):Navigation 3 页面导航
android
Linsk13 小时前
组件 = 模板 + 业务逻辑
java·前端·vue.js
唐青枫14 小时前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
星沉远浦14 小时前
用Gemini高效解决Java代码报错难以定位的问题
java
rocpp16 小时前
Android 多语言切换实战:从 Context 到 Android 13 应用语言适配
android·kotlin
释然小师弟17 小时前
Android开发十年:反思与回顾
android·后端·嵌入式
用户2986985301418 小时前
Word 文档字符级格式化:Java 实现方案详解
java·后端