C# 如何使用代码添加控件及控件事件
1.首先简单设计一下界面:
添加了Click事件

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <StackPanel Name="addButtonSp" Margin="5">
            <Button FontSize="20" Foreground="Blue" Click="OnButtonClick">在窗口加入按钮</Button>
        </StackPanel>
    </ScrollViewer>
</Window>
2.在代码部分,简单设计一下控件属性
就是在点击上面Button 按钮时,界面自动添加一个按钮
private void OnButtonClick(object sender, RoutedEventArgs e)
{
    Button btn = new Button();
    btn.Background = Brushes.LightBlue;
    btn.Foreground = Brushes.Yellow;
    btn.Height = 50;
    btn.Content = "按钮";
    btn.Click += new RoutedEventHandler(mes);
    addButtonSp.Children.Add(btn);
}
重点来了,
btn.Click += new RoutedEventHandler(mes);
这行代码,就是用来指定所添加的button控件的点击事件,必须要用RoutedEventHandler(),其次()里面是被调用的事件函数,请往下看:
private void mes(object sender, RoutedEventArgs e),注意参数写法
private void mes(object sender, RoutedEventArgs e)
{
    MessageBoxResult a = MessageBox.Show("你点击了?", "Tip",MessageBoxButton.YesNoCancel,MessageBoxImage.Error);
    if (a == MessageBoxResult.Yes)
    {
        MessageBox.Show("你又点击了?", "haha", MessageBoxButton.OK, MessageBoxImage.Exclamation);
    }
}
这部分的全部代码
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void OnButtonClick(object sender, RoutedEventArgs e)
    {
        Button btn = new Button();
        btn.Background = Brushes.LightBlue;
        btn.Foreground = Brushes.Yellow;
        btn.Height = 50;
        btn.Content = "按钮";
        btn.Click += new RoutedEventHandler(mes);
        addButtonSp.Children.Add(btn);
    }
    private void mes(object sender, RoutedEventArgs e)
    {
        MessageBoxResult a = MessageBox.Show("你点击了?", "Tip",MessageBoxButton.YesNoCancel,MessageBoxImage.Error);
        if (a == MessageBoxResult.Yes)
        {
            MessageBox.Show("你又点击了?", "haha", MessageBoxButton.OK, MessageBoxImage.Exclamation);
        }
        else if(a == MessageBoxResult.No)
        {
            this.Close();
        }
    }
3.结果
a.启动界面

b.疯狂加入按钮

c.随机点击一个按钮

添加button控件,再通过此控件调用其它函数,成功了O(∩_∩)O哈哈~
花絮:
其实,在实验二  图层操作.pdf中,老师给的代码就用了这个代码(>‿◠)

C# 如何使用代码添加控件及控件事件的更多相关文章
- (转载)VC/MFC 工具栏上动态添加组合框等控件的方法
		引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ... 
- VC/MFC 工具栏上动态添加组合框等控件的方法
		引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发 ... 
- ASP.NET#在设计窗口上添加了一个SqlDataSource控件后,没有显示出来?
		在设计窗口上添加了一个SqlDataSource控件后,没有显示出来,但后台代码是有的 处理的办法:菜单栏->视图->可视辅助->ASP.NET非可视控件 (我用的是VS2012) 
- C#中缓存的使用  ajax请求基于restFul的WebApi(post、get、delete、put)  让 .NET 更方便的导入导出 Excel  .net core api +swagger(一个简单的入门demo 使用codefirst+mysql)  C# 位运算详解  c# 交错数组  c# 数组协变  C# 添加Excel表单控件(Form Controls)  C#串口通信程序
		C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ... 
- 通过编写串口助手工具学习MFC过程——(六)添加Edit编辑框控件
		通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ... 
- Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)
		使用代码主动去调用控件的点击事件(模拟人手去触摸控件) //View 可以是LinearLayout,Button,TextView View.performClick(); 
- winform用户控件、动态创建添加控件、timer控件、控件联动
		用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ... 
- C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去
		C# 向程序新建的窗体中添加控件,控件需要先实例化,然后用controls.add添加到新的窗体中去 Form settingForm = new Form(); setForm deviceSet ... 
- C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib,该怎么解决
		C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib如标题,在窗体中添加Windows Media Player 控件,当调 ... 
随机推荐
- 【Python机器学习实战】决策树与集成学习(六)——集成学习(4)XGBoost原理篇
			XGBoost是陈天奇等人开发的一个开源项目,前文提到XGBoost是GBDT的一种提升和变异形式,其本质上还是一个GBDT,但力争将GBDT的性能发挥到极致,因此这里的X指代的"Extre ... 
- node.js一头雾水
			开始学习node.js,一头雾水,谁可以告诉我怎么学......欢迎评论留言怎么学node.js的,谢谢 node,node,node,给自己加油 放一张自己设计的日历图鼓励一下:):):),加油.. ... 
- squid缓存代理
			目录: 一.Squid 代理服务器 二.Squid 代理安装 三.搭建传统代理 四.搭建透明代理 五.ACL访问控制 六.Squid日志分析 七.反向代理 一.Squid 代理服务器Squid 主要提 ... 
- call、apply、bind三者比较
			var obj={a:1}; var foo={ getA:function(item1,item2){ return this.a+item1+item2 } } // apply绑定参数为数组,一 ... 
- Sonarqube C# 配置资料整理
			c#配置方式: http://www.cnblogs.com/CoderAyu/p/9416376.html http://www.cnblogs.com/jingridong/p/6513884.h ... 
- K8s 开始
			Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统.本文将介绍如何快速开始 K8s 的使用. 了解 K8s Kubernetes / Overview 搭建 K8s 本地开发测试 ... 
- C#导出数据—使用Word模板
			前言 本文主要介绍C#使用标签替换的方法导出数据,导出的数据模板使用Word文档. 模板建立 首先创建一个Word文档,然后建立一个基础模板.然后将上方菜单切换到插入菜单. 然后在想填充数据的地方添加 ... 
- dede新增字段调用方法
			各位在使用{dede:channel }标签的时候,难免会遇到因为现在字段不能满足业务需求,需要新增的情况(具体怎么新增字段自行百度). 但是新增的字段通过DEDE的标签是不能直接使用的,现在博主介绍 ... 
- Docker系列(14)- Portainer可视化面板安装
			官网 https://documentation.portainer.io/v2.0-be/deploy/beinstalldocker/ 可视化 portainer docker run -d -p ... 
- httprunner版本没有更新问题
			使用命令行创建虚拟环境,创建脚手架目录后,使用pycharm打开所创建的脚手架目录. 执行:hrun demo_testcase_request.yml 提示: E:\hrun_ven\test_hr ... 
