控件列表刷新

jimandlice 2015-10-14 10:15:37
有一个panel控件list,在list中有很多panel对象,当panel满足条件的时候,就把panel移除,剩下的panel会自动上移
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajianchina 2015-10-14
  • 打赏
  • 举报
回复
用了FlowLayoutPanel控件,就不要用Panel了,你的自定义控件就直接进去就行了
ajianchina 2015-10-14
  • 打赏
  • 举报
回复
我把动态加载panel控件中的dock设置为top时,当符合条件的时候,动态加载显示不了在panel上 panel要给他设一个高度 当然,如果你的自定义控件没有dock属性,可以在外层容器用FlowLayoutPanel控件,设置他的FlowDirection为TopDown上下排列。
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 10 楼 jimandlice 的回复:
[quote=引用 9 楼 jimandlice 的回复:]
[quote=引用 8 楼 ajianchina 的回复:]
[quote=引用 6 楼 jimandlice 的回复:]
如果动态加载的控件是usercontrol呢
public partial class Mypanel1 : UserControl 我是这样设计的

没问题的,Panel的Dock设为Top就可以了,你可以测试看一下效果就知道了。[/quote]
我把动态加载panel控件中的dock设置为top时,当符合条件的时候,动态加载显示不了在panel上
 Mypanel1 pa = new Mypanel1();
pa.Location = new Point(7, 10 + (plScanList.Controls.Count - 1) * (pa.Height + 5) + (pa.Height + 5));
pa.LbShelf = temp.m_strFcName;
pa.LbDetail = temp.m_strFCNumScan + "/" + temp.m_strFCNun;
plScanList.Controls.Add(pa);

plScanList为panel的对象名,在UI上显示不了[/quote]

思路是先动态加载进来,当满足条件后在移除这样的[/quote]
我自己定义MyPanel1 没有dock这个属性
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 9 楼 jimandlice 的回复:
[quote=引用 8 楼 ajianchina 的回复:]
[quote=引用 6 楼 jimandlice 的回复:]
如果动态加载的控件是usercontrol呢
public partial class Mypanel1 : UserControl 我是这样设计的

没问题的,Panel的Dock设为Top就可以了,你可以测试看一下效果就知道了。[/quote]
我把动态加载panel控件中的dock设置为top时,当符合条件的时候,动态加载显示不了在panel上
 Mypanel1 pa = new Mypanel1();
pa.Location = new Point(7, 10 + (plScanList.Controls.Count - 1) * (pa.Height + 5) + (pa.Height + 5));
pa.LbShelf = temp.m_strFcName;
pa.LbDetail = temp.m_strFCNumScan + "/" + temp.m_strFCNun;
plScanList.Controls.Add(pa);

plScanList为panel的对象名,在UI上显示不了[/quote]

思路是先动态加载进来,当满足条件后在移除这样的
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 8 楼 ajianchina 的回复:
[quote=引用 6 楼 jimandlice 的回复:]
如果动态加载的控件是usercontrol呢
public partial class Mypanel1 : UserControl 我是这样设计的

没问题的,Panel的Dock设为Top就可以了,你可以测试看一下效果就知道了。[/quote]
我把动态加载panel控件中的dock设置为top时,当符合条件的时候,动态加载显示不了在panel上
 Mypanel1 pa = new Mypanel1();
pa.Location = new Point(7, 10 + (plScanList.Controls.Count - 1) * (pa.Height + 5) + (pa.Height + 5));
pa.LbShelf = temp.m_strFcName;
pa.LbDetail = temp.m_strFCNumScan + "/" + temp.m_strFCNun;
plScanList.Controls.Add(pa);

plScanList为panel的对象名,在UI上显示不了
ajianchina 2015-10-14
  • 打赏
  • 举报
回复
引用 6 楼 jimandlice 的回复:
如果动态加载的控件是usercontrol呢 public partial class Mypanel1 : UserControl 我是这样设计的
没问题的,Panel的Dock设为Top就可以了,你可以测试看一下效果就知道了。
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 5 楼 xdashewan 的回复:
[quote=引用 4 楼 jimandlice 的回复:]
是我没有说清楚,程序思路是这样的,动态的加载panel到panel这个控件里面,当panel满足添加的时候会被移除,在ui上,其他的panel会上移

这样的就很简单了,不要动态的加载panel到panel上,而是动态的加载panel到FlowLayoutPanel上,然后就没有上移烦恼了[/quote]

现在动态加载的控件是UserControl的呢
public partial class Mypanel1 : UserControl 我这样设计的
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 3 楼 ajianchina 的回复:
不要移除,我告诉你怎么弄,panel在排列的时候他有个Dock属性,你将这些panel的Dock属性全部设为Top,靠顶部自动排列
//你的panel集合
List<Panel> pllist = new List<Panel>();
//你只需不让他显示就行了,其他panel会自动上移,不要删除他,这样重新恢复显示的时候,他还在原来的队列位置。
pllist.ForEach(p => p.Visible = (你的条件) ? false:true);

大神,是不是把动态加载的panel的DOCK属性设置为TOP呀?

如果动态加载的控件是usercontrol呢
public partial class Mypanel1 : UserControl 我是这样设计的

xdashewan 2015-10-14
  • 打赏
  • 举报
回复
引用 4 楼 jimandlice 的回复:
是我没有说清楚,程序思路是这样的,动态的加载panel到panel这个控件里面,当panel满足添加的时候会被移除,在ui上,其他的panel会上移

这样的就很简单了,不要动态的加载panel到panel上,而是动态的加载panel到FlowLayoutPanel上,然后就没有上移烦恼了
ajianchina 2015-10-14
  • 打赏
  • 举报
回复
不要移除,我告诉你怎么弄,panel在排列的时候他有个Dock属性,你将这些panel的Dock属性全部设为Top,靠顶部自动排列 //你的panel集合 List<Panel> pllist = new List<Panel>(); //你只需不让他显示就行了,其他panel会自动上移,不要删除他,这样重新恢复显示的时候,他还在原来的队列位置。 pllist.ForEach(p => p.Visible = (你的条件) ? false:true);
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
怎么叫做panel上移,ui中上移,还是list内的index位置上移,如果是后者list删除默认就会上移,前者涉及到ui,都不知道你怎么设计和使用无法作答

是我没有说清楚,程序思路是这样的,动态的加载panel到panel这个控件里面,当panel满足添加的时候会被移除,在ui上,其他的panel会上移
xdashewan 2015-10-14
  • 打赏
  • 举报
回复
怎么叫做panel上移,ui中上移,还是list内的index位置上移,如果是后者list删除默认就会上移,前者涉及到ui,都不知道你怎么设计和使用无法作答
adrianEvin 2015-10-14
  • 打赏
  • 举报
回复
list里面的一个panel移除了,然后界面的panel里面的内容全部清空释放了?
ajianchina 2015-10-14
  • 打赏
  • 举报
回复
引用 14 楼 jimandlice 的回复:
[quote=引用 13 楼 ajianchina 的回复:] 用了FlowLayoutPanel控件,就不要用Panel了,你的自定义控件就直接进去就行了
如果要移除的 还是用上面的方法么 隐藏起来 还是要remove掉[/quote] 这当然看你需求,你不需要再用了,就删掉。
jimandlice 2015-10-14
  • 打赏
  • 举报
回复
引用 13 楼 ajianchina 的回复:
用了FlowLayoutPanel控件,就不要用Panel了,你的自定义控件就直接进去就行了
如果要移除的 还是用上面的方法么 隐藏起来 还是要remove掉

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧