WPF窗体事件响应
来源:互联网 发布:mac 命令行显示路径 编辑:程序博客网 时间:2024/05/16 00:36
/*记录我学习事件的过程*/
为降低代码的耦合性,通常将事件“上抛”,由父窗体处理事件;具体的思路是:
以下为自己写的Demo,实现的是:当按下左Shift、左Ctrl切换颜色
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace EventTest{ /// <summary> /// UserControl1.xaml 的交互逻辑 /// </summary> public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public event EventHandler<KeyEventArgs> OnAltKeyUp; private void UserControl_KeyUp(object sender, KeyEventArgs e) { if(OnAltKeyUp!=null) OnAltKeyUp(sender, e); } }}
***************************************************
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace EventTest{ /// <summary> /// UserControl2.xaml 的交互逻辑 /// </summary> public partial class UserControl2 : UserControl { public UserControl2() { InitializeComponent(); } public event EventHandler<KeyEventArgs> OnCtrlKeyUp; private void UserControl_KeyUp(object sender, KeyEventArgs e) { if (OnCtrlKeyUp != null) OnCtrlKeyUp(sender, e); } }}
/*以下为Window的设计界面和处理方法*/
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <EventTest:UserControl1 x:Name="User1" Grid.Column="0"/> <EventTest:UserControl2 x:Name="User2" Grid.Column="1"/> </Grid>
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace EventTest{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // this.EscEvent += new KeyEventHandler(Window_KeyUp); User1.OnAltKeyUp += Window_KeyUp; User2.OnCtrlKeyUp += Window_KeyUp; } private event KeyEventHandler EscEvent; private void Window_KeyUp(object sender, KeyEventArgs e) { OnKeyUp(sender, e); } private void OnKeyUp(object sender,KeyEventArgs e) { //if (e.Key == Key.Escape) //{ // User1.Visibility = User1.Visibility == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed; // User2.Visibility = User1.Visibility == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed; //} if (e.Key == Key.LeftShift)//User1 { User1.Background = new SolidColorBrush(Colors.Yellow); User2.Background = new SolidColorBrush(Colors.Green); } else if (e.Key==Key.LeftCtrl)//User2 { User1.Background = new SolidColorBrush(Colors.Red); User2.Background = new SolidColorBrush(Colors.Yellow); } } }}
运行的效果如下:
初始界面
左Shift键:
左Ctrl键:
0 0
- WPF窗体事件响应
- wpf 无边框窗体无法响应MouseMove事件
- swing窗体编程事件响应
- WPF窗体
- WPF处理窗体的最小化事件及恢复正常窗体事件
- WPF ,如何退出窗体而不触发closing事件
- wpf Canvas 对鼠标事件不响应的解决办法
- WPF 为资源字典 添加事件响应的后台类
- WPF触屏Touch事件在嵌套控件中的响应问题
- 如何在线程中创建可以响应事件的窗体
- JAVA模态窗体监听事件无响应的问题
- Winform wpf在一个窗体的事件里,修改另一个窗体控件的值
- c# wpf wpf 子窗口调用父窗口(或者父窗口响应子窗口事件)
- [VB.NET][问]如何让父窗体响应子窗体中的某一个自定义事件
- MTK 的控件和窗体绘制机制以及控件、窗体的事件响应机制
- WPF窗体程序中实现响应系统热键所用到的键值定义
- WPF实现C#中DoEvent事件(可实现延迟响应事件)
- WPF窗体 WPF窗体调用函数
- HDU 2094产生冠军(拓扑排序+map)
- 关于Servlet中@WebServlet注释不生效的解决方法
- 【笔记】理解Windows窗体产生的机制
- 软工学习结束后的第一遍思维导图
- Android 内容提供者(三)
- WPF窗体事件响应
- mac中如何卸载pkg包
- SQL Server无法连接到(local)问题的解决办法
- 黑马程序员_Java中的枚举
- 黑马程序员_OC_Foundation框架
- PhoneGap开发环境搭建
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 《Javascript 权威指南》笔记
- 水贴 : 用 Windows Live Writer 写离线日志