首页
登录 | 注册

WPF 中动态创建和删除控件

动态创建控件

1.容器控件.RegisterName("Name",要注册的控件)   //注册控件

2.容器控件.FindName("Name") as  控件类型            //找到控件并转换成相应类型

注意:仅通过 控件.Name来设置是不能通过FindName来找到控件的,必须注册
动态删除控件
1.容器控件.Children.Remove(控件)                           //移除控件

2.容器控件.UnregisterName("Name")                       //取消注册

其它设置

1.控件.SetValue(Grid.RowProperty, 0);                    //设置控件在Grid面板中的行数
   控件.SetValue(Grid.ColumnProperty, 1);               //设置控件在Grid面板中的列数

2.Canvas.SetLeft("控件名", 50);                                //设置控件在Canvas面板中的横坐标
   Canvas.SetTop("控件名", 50);                                //设置控件在Canvas面板中的纵坐标

eg:

当点击Button_Add按钮的时候在Canvas里添加一个Button;

当点击Button_Remove的时候把这个新加的Button移除;

设:Canvas 的Name为 canvas

代码:

[java] view plaincopy
  1. private void Button_Add_Click(object sender, System.Windows.RoutedEventArgs e)  
  2.         {  
  3.             Button btn = new Button();  
  4.             //btn.Name = "newButton";//这里设置的Name是找不到的  
  5.             btn.Width = 100;  
  6.             btn.Height= 50;  
  7.             canvas.Children.Add(btn);  
  8.             canvas.RegisterName("newButton", btn);//注册名字,以便以后使用  
  9.         }  
  10.   
  11.         private void Button_Remove_Click(object sender, RoutedEventArgs e)  
  12.         {  
  13.             Button btn = canvas.FindName("newButton") as Button;//找到刚新添加的按钮  
  14.             if (btn != null)//判断是否找到,以免在未添加前就误点了  
  15.             {  
  16.                 canvas.Children.Remove(btn);//移除对应按钮控件  
  17.                 canvas.UnregisterName("newButton");//还需要把对用的名字注销掉,否则再次点击Button_Add会报错  
  18.             }  
  19.         }  

来源:http://blog.csdn.net/wushang923/article/details/6688056

相关文章

  • 字符串: 字符串用单引号(')或双引号(")括起来,不可变 1,find通过元素找索引,可切片,找不到返回-1 2,index,找不到报错. 3,split 由字符串分割成列表,默认按空格. 4,captalize 首字母大写,其 ...
  • 一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!
    本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者--泽林提供,部分答案由Hollis整理自知识星球<Hollis和他的朋友们>中「直面Java」板块. 经历了漫长一个月的 ...
  • 阿里新一代分布式任务调度平台Schedulerx2.0破土而出
    1. 产品简介 Schedulerx2.0是阿里中间件自研的基于Akka架构的新一代分布式任务调度平台,提供定时.任务编排.分布式跑批等功能.使用Schedulerx2.0,您可以在控制台配置管理您的定时任务,查询历史执行记录,查看运行日志 ...
  • 源码|详解分布式事务之 Seata-Client 原理及流程
    前言 在分布式系统中,分布式事务是一个必须要解决的问题,目前使用较多的是最终一致性方案.自年初阿里开源了Fescar(四月初更名为Seata)后,该项目受到了极大的关注,目前已接近 8000 Star.Seata 以高性能和零侵入的特性为目 ...
  • 前端基础---JS基础
    背景介绍 Javascript 是一种运行在客户端的脚本语言 应用场景: 1.网页特效 2.服务端开发(Node.js) 3.命令行工具(Node.js) 4.桌面程序(Elextron) 5.APP(Cordova) 6.控制硬件-物联网 ...
  • 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
    为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里巴巴资深技术专家们结合多年的工作.面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案将在专辑结束后统一汇总分享,点此进入答题并围观他人答案).并通 ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.284 s.
京ICP备10005923号