tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

动态设置winfrom控件属性的值

5006人阅读 2020/7/25 16:00 总访问:1166301 评论:0 收藏:0 手机
分类: 后端

code:

  1. public static void SetBehavior<TControl, TValue>(Control control, string propertyName, TValue value)
  2. {
  3. if (control is TControl)
  4. {
  5. Type t = typeof(TControl);
  6. PropertyInfo propertInfo = t.GetProperty(propertyName);
  7. propertInfo.SetValue(control, value);
  8. }
  9. }
  10. public void update(string name, object propertyName, Object value)
  11. {
  12. foreach (Control c in Controls.OfType<Control>().ToList().Where(a => a.Name == name))
  13. {
  14. // MessageBox.Show("修改的控件名:"+c.Name+"");
  15. //SetProperty<Control, object>(c, propertyName, value);
  16. SetBehavior<Control, object>(c, propertyName.ToString(), value);
  17. }
  18. }

调用:

  1. private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
  2. {
  3. //
  4. // MessageBox.Show("修改的属性名:" + e.ChangedItem.PropertyDescriptor.Name+ "");
  5. // MessageBox.Show(models.Name+"");
  6. // MessageBox.Show("更改后的数据:"+models.Text);
  7. // MessageBox.Show("更改前的值:"+e.OldValue + "");
  8. // MessageBox.Show("更改后的值:" + e.ChangedItem.Value + "");
  9. //拿到更改后的数据
  10. ControlModel models = this.propertyGrid1.SelectedObject as ControlModel;
  11. /// <param name="propertyName">属性名</param>
  12. string propertyName = e.ChangedItem.PropertyDescriptor.Name;
  13. /// <param name="value">属性值</param>
  14. object value = e.ChangedItem.Value;
  15. //update(models.Name, func, value);
  16. update(models.Name, propertyName, value);
  17. }
  18. public void property(Control ctr)
  19. {
  20. propertyGrid1.SelectedObject = null;
  21. ControlModel controlModel = new ControlModel();
  22. controlModel.Text = ctr.Text;
  23. controlModel.Name = ctr.Name;
  24. controlModel.Size = ctr.Size;
  25. controlModel.Color = ctr.ForeColor;
  26. controlModel.Font = ctr.Font;
  27. controlModel.Image = ctr.BackgroundImage;
  28. controlModel.Location = ctr.Location;
  29. propertyGrid1.SelectedObject = controlModel;
  30. propertyGrid1.Visible = true;
  31. }
  32. private void label1_Click(object sender, EventArgs e)
  33. {
  34. property(sender as Control);
  35. }
  36. private void textBox1_TextChanged(object sender, EventArgs e)
  37. {
  38. property(sender as Control);
  39. }
  40. private void checkBox1_CheckedChanged(object sender, EventArgs e)
  41. {
  42. property(sender as Control);
  43. }

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

android后台动态添加布局文件、控件与动态设置属性

翻译布局文件布局文件 &lt;LinearLayout android:layout_width=&quot;fill_parent&quot; andro...

android后台动态添加布局文件、控件与动态设置属性2

原布局文件 &lt;ScrollView android:layout_width=&quot;wrap_content&quot; android:layout_heig...

c winfrom跨窗体传值

微凉晨光里,再次见到你,笑得很甜蜜其实只要能拿到彼此的对象,那么相互传值,相互访问就很好实现了。所以只需要在主窗体...

winfrom dataGridView监听

前言每当单元格处于编辑模式时,其托管控件正在接收KeyDown事件,而不是DataGridView包含它的父项。这就是为什么当某个单元...

winfrom笔记

前言winfrom笔记winfrom 打开文件借助openFileDialog类直接拖控件,也可以直接实例化这个类privatevoidbutton1_Click(objec...

文件流下载(winfrom

前言下载api中返回的文件里与web端不同,winfrom 不能使用Responses与 Request所以下载需要换种方式(核心是怎么拿到返回的...

winfrom手动选择文件完整路径

前言笔记具体代码//选择路径 privatestringSelectPath() { stringpath=string.Empty; OpenFileDialogopenFileDialo=new...

winfrom 选择文件夹

代码如下: private void button3_Click(object sender, EventArgs e) { System.Windows.Forms.FolderBrowserDialog...
满天繁星思绪起,一言一诺只为你。