C# UserControl集合属性使用
2024-08-30 08:21:18
在UserControl中,定义集合属性时,如果直接使用List是检测不到在属性框中的列表修改变化的,可以通过 ObservableCollection() 实现
1、定义类
[Serializable]
public class Menu : INotifyPropertyChanged
{
private string _Fa; public string MenuName
{
get { return _Fa; }
set
{
if (_Fa != value)
{
_Fa = value;
RaisePropertyChangedEvent("Fa");
}
}
} private Image _Fb; public Image Image
{
get { return _Fb; }
set
{
if (_Fb != value)
{
_Fb = value;
RaisePropertyChangedEvent("Fb");
}
}
} public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChangedEvent(string name)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(name));
}
} }
2、实现
private ObservableCollection<Menu> _menus = new ObservableCollection<Menu>();
[Browsable(true)]
[Description("菜单")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ObservableCollection<Menu> Menus
{
get { return _menus; }
set {
_menus = value;
MessageBox.Show("ceshi");//这里检测不到
}
} private void FormHeader_Load(object sender, EventArgs e)
{
GenerateUserPhoto();
Menus.CollectionChanged += Menus_CollectionChanged; ; }
private void Menus_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
flowLayoutPanel1.Controls.Clear();
for (int i = ; i < Menus.Count; i++)
{
Button button=new Button();
button.Text = Menus[i].MenuName;
flowLayoutPanel1.Controls.Add(button);
}
}
这样,在属性列表中修改Menus,显示区域就会实时变化,添加相应的菜单按钮个数。
最新文章
- PHP之MVC学习
- python-根据左右值获取城市区域编码
- C# ?(问号)的三个用处(转载)
- Spring IoC容器的设计—1—主线
- 重装VS2010时出现未能正确加载 ";radlangsvc.package,radlangsvc.vs...
- Xcode7真机测试
- 利用Excel批量高速发送电子邮件
- 谱聚类--SpectralClustering
- oracle scn浅析
- TP-LINK telnet远程 重启路由器(转)
- [转]使用Openssl的AES加密算法
- IOS Cell重用机制
- Reverse Integer 2015年6月23日
- JQuery.lazyload 图片延迟加载
- 03_Linux文件和目录
- Spring之ORM模块
- Git如何回滚代码?
- Go-day06
- Linux环境变量总结
- R语言实战 —— 常见问题解决方法
热门文章
- gulp与webpack的区别
- 洛谷 P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】
- 解决关于confluence缓慢 字体乱码 宏乱码 编辑不能贴图等问题
- 深挖JDK动态代理(二):JDK动态生成后的字节码分析
- Ecplise 快捷键笔记
- Runtime.getRuntime().exec(...),当参数中有空格时!
- 模块---hashlib、configparse、logging
- mybatis 的批量更新操作sql
- Day3--Python--字符串,for循环,迭代
- Codeforces Round #523 (Div. 2) D. TV Shows