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 控件,当调 ...
随机推荐
- Hounter
这题是概率与期望,不是很熟,所以冲了两篇题解才来写总结. 首先可以发现1猎人死的轮数是他之前死了的列人数加一. 那么题目转化为求先于一号猎人死的猎人数的期望值. 考虑这样一个事情,就是 ...
- MongoDB(1)- 入门介绍
MongoDB 数据库 MongoDB 是一个文档数据库,旨在简化开发和扩展 MongoDB 中的记录是一个文档 Document,是由字段和值对组成的数据结构 MongoDB 文档类似于 JSON ...
- 源码解读Dubbo分层设计思想
一.Dubbo分层整体设计概述 我们先从下图开始简单介绍Dubbo分层设计概念: (引用自Duboo开发指南-框架设计文档) 如图描述Dubbo实现的RPC整体分10层:service.config. ...
- 分布式必备理论基础:CAP和BASE
大家好,我是老三,今天是没有刷题的一天,心情愉悦,给大家分享两个简单的知识点:分布式理论中的CAP和BASE. CAP理论 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,Consi ...
- webService动态调用及返回至处理
http://www.cnblogs.com/xffy1028/archive/2012/05/07/2487595.html using System; using System.Collectio ...
- uni-app仿抖音APP短视频+直播+聊天实例|uniapp全屏滑动小视频+直播
基于uniapp+uView-ui跨端H5+小程序+APP短视频|直播项目uni-ttLive. uni-ttLive一款全新基于uni-app技术开发的仿制抖音/快手短视频直播项目.支持全屏丝滑般上 ...
- php实现实例化类后自动进行错误以及异常处理(简易版)
<?php class App { public function __construct() { /* * ini_set 设置配置项 * display_errors 是否在页面显示错误信息 ...
- Java基础系列(31)- 可变参数
可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...
- Jmeter系列(8)- 参数化:JSON提取器、全局参数化、CSV文件导入
JSON提取器 同一个响应结果需要提取多个参数进行参数化,下方输入项用分号(;)进行间隔.请求引用时${变量名} 全局参数化 此处全局参数化用的是用户自定义的变量 CSV文件导入
- js中date类型的格式转化为yyyy-MM-dd HH:mm:ss的String类型
在vue中或其他框架中可以在Date的原型链中添加Format的方法,如ruoyi可以写在main.js中更好,如果写在utils还需要去导入包. 正常的js直接放到utils.js就好 Date.p ...