文章目录
WPF事件的参数定义1. `sender` 参数定义用途示例注意
2. `e` 参数定义用途常用属性示例
事件参数(EventArgs)常见的事件参数类
WPF窗体(Window)常见事件1. **Activated**2. **Closed**3. **Closing**4. **ContentRendered**5. **Deactivated**6. **DragEnter**7. **DragLeave**8. **DragOver**9. **Drop**10. **GotFocus**11. **LostFocus**12. **LocationChanged**13. **MouseEnter**14. **MouseLeave**15. **MouseLeftButtonDown**16. **MouseLeftButtonUp**17. **MouseMove**18. **MouseRightButtonDown**19. **MouseRightButtonUp**20. **PreviewKeyDown**21. **PreviewKeyUp**22. **PreviewTextInput**23. **SizeChanged**24. **SourceInitialized**25. **StateChanged**26. **KeyDown**27. **KeyUp**28. **TextInput**29. **Initialized**30. **Loaded**31. **Unloaded**
WPF事件的参数定义
在 WPF(Windows Presentation Foundation)中,事件处理程序通常有两个参数:sender 和 e。这两个参数在事件处理过程中起着关键作用,分别提供了事件的触发源和事件的详细信息。下面详细解释这两个参数的用途和使用方法。
1. sender 参数
定义
sender 是一个 object 类型的参数,表示触发事件的对象。
用途
sender 用于确定哪个控件或对象触发了事件。可以在事件处理程序中对 sender 进行类型转换,以便访问该对象的属性或方法。
示例
假设我们有一个按钮,点击按钮时触发事件。
private void Button_Click(object sender, RoutedEventArgs e)
{
// 将 sender 转换为 Button 类型
Button clickedButton = (Button)sender;
// 访问按钮的属性
string buttonText = clickedButton.Content.ToString();
MessageBox.Show($"Clicked button with text: {buttonText}");
}
注意
sender 通常是一个控件或对象的引用,而不是事件参数。在事件处理程序中,如果你需要访问触发事件的控件的属性(如按钮的内容或文本框的文本),可以通过 sender 进行类型转换。
2. e 参数
定义
e 是一个继承自 EventArgs 或其派生类的对象,表示事件的详细信息。
用途
e 提供与事件相关的额外信息,例如鼠标位置、键盘按键、路由事件的传播路径等。不同的事件类型对应不同的事件参数类。例如:
RoutedEventArgs:用于路由事件(如 Click 事件)。MouseEventArgs:用于鼠标事件(如 MouseMove 事件)。KeyEventArgs:用于键盘事件(如 KeyDown 事件)。
常用属性
RoutedEventArgs 的常用属性:
OriginalSource:获取事件的原始触发对象(通常在事件路由过程中使用)。Handled:标记事件是否已经被处理(设置为 true 可以阻止事件的进一步传播)。Source:获取事件的实际触发对象。 MouseEventArgs 的常用属性:
GetPosition(IInputElement relativeTo):获取鼠标相对于某个元素的位置。LeftButton/RightButton:获取鼠标按键的状态。 KeyEventArgs 的常用属性:
Key:获取按下的键盘按键。IsDown/IsUp:判断按键是否按下或释放。
示例
假设我们有一个按钮,点击按钮时获取鼠标的位置。
private void Button_Click(object sender, RoutedEventArgs e)
{
// 获取鼠标相对于按钮的位置
Point mousePosition = e.GetPosition((IInputElement)sender);
MessageBox.Show($"Mouse position on button: X={mousePosition.X}, Y={mousePosition.Y}");
}
事件参数(EventArgs)
在WPF中,事件参数是通过继承自EventArgs类的子类来传递的。EventArgs类是一个基类,用于存储与特定事件相关的信息。不同的事件类型可能会有不同的事件参数类,以便提供特定的信息。
常见的事件参数类
EventArgs:
最基本的事件参数类,不包含任何特定信息。 RoutedEventArgs:
WPF中大多数UI事件使用的事件参数类,继承自EventArgs。提供了与路由事件相关的属性,如源元素、事件路由方向等。 MouseEventArgs:
与鼠标事件相关的事件参数类,继承自InputEventArgs。提供鼠标位置、按钮状态、滚轮信息等。 KeyboardEventArgs:
与键盘事件相关的事件参数类,继承自InputEventArgs。提供按键信息,如键码、修饰符等。 TextChangedEventArgs:
与文本更改事件相关的事件参数类,继承自EventArgs。提供有关文本更改的信息,如更改的起始位置和添加的文本
WPF窗体(Window)常见事件
1. Activated
触发条件: 当窗口被激活(成为前台窗口)时触发。用途: 常用于在窗口激活时执行某些操作,例如刷新数据或重新加载内容。
2. Closed
触发条件: 当窗口被关闭后触发。用途: 用于在窗口关闭后执行清理操作,例如释放资源或保存数据。
3. Closing
触发条件: 在窗口即将关闭时触发(例如用户点击窗口的关闭按钮时)。用途: 用于在关闭窗口前执行确认操作或取消关闭,例如提示用户保存数据。
4. ContentRendered
触发条件: 当窗口的内容首次被渲染后触发。用途: 通常用于在窗口内容加载完成后执行某些操作,例如初始化控件或加载数据。
5. Deactivated
触发条件: 当窗口失去激活状态(不再是最前台窗口)时触发。用途: 可以用于在窗口失去焦点时执行某些操作,例如暂停某些任务。
6. DragEnter
触发条件: 当用户开始拖动对象并将其拖入窗口区域时触发。用途: 用于处理拖放操作,例如检查拖动的数据类型或显示拖放效果。
7. DragLeave
触发条件: 当用户拖动对象并将其拖出窗口区域时触发。用途: 用于处理拖放操作,例如取消拖放效果。
8. DragOver
触发条件: 当用户拖动对象并将其停留在窗口区域时触发。用途: 用于处理拖放操作,例如动态更新拖放效果。
9. Drop
触发条件: 当用户完成拖放操作并将对象放置在窗口区域时触发。用途: 用于处理拖放操作,例如处理拖放的数据。
10. GotFocus
触发条件: 当窗口获得焦点时触发。用途: 用于在窗口获得焦点时执行某些操作,例如启用某些功能。
11. LostFocus
触发条件: 当窗口失去焦点时触发。用途: 用于在窗口失去焦点时执行某些操作,例如暂停某些功能。
12. LocationChanged
触发条件: 当窗口的位置发生变化时触发。用途: 用于监听窗口位置的变化,例如记录窗口的当前位置。
13. MouseEnter
触发条件: 当鼠标指针进入窗口区域时触发。用途: 用于在鼠标进入时执行某些操作,例如显示提示信息。
14. MouseLeave
触发条件: 当鼠标指针离开窗口区域时触发。用途: 用于在鼠标离开时执行某些操作,例如隐藏提示信息。
15. MouseLeftButtonDown
触发条件: 当鼠标左键在窗口区域内按下时触发。用途: 用于处理鼠标左键按下事件,例如启动拖动操作。
16. MouseLeftButtonUp
触发条件: 当鼠标左键在窗口区域内释放时触发。用途: 用于处理鼠标左键释放事件,例如完成拖动操作。
17. MouseMove
触发条件: 当鼠标指针在窗口区域内移动时触发。用途: 用于处理鼠标移动事件,例如动态更新UI效果。
18. MouseRightButtonDown
触发条件: 当鼠标右键在窗口区域内按下时触发。用途: 用于处理鼠标右键按下事件,例如显示上下文菜单。
19. MouseRightButtonUp
触发条件: 当鼠标右键在窗口区域内释放时触发。用途: 用于处理鼠标右键释放事件,例如完成上下文菜单操作。
20. PreviewKeyDown
触发条件: 当用户在窗口中按下键盘按键时触发(冒泡事件)。用途: 用于处理键盘按键事件,例如捕获特定的快捷键。
21. PreviewKeyUp
触发条件: 当用户在窗口中释放键盘按键时触发(冒泡事件)。用途: 用于处理键盘按键释放事件,例如检测按键状态。
22. PreviewTextInput
触发条件: 当用户在窗口中输入文本时触发(例如按下键盘或粘贴文本)。用途: 用于处理文本输入事件,例如实时更新显示内容。
23. SizeChanged
触发条件: 当窗口的大小发生变化时触发。用途: 用于监听窗口大小的变化,例如调整布局或重新加载内容。
24. SourceInitialized
触发条件: 当窗口的源(即窗口句柄)初始化完成后触发。用途: 用于在窗口句柄初始化后执行某些操作,例如与低级别的Win32 API交互。
25. StateChanged
触发条件: 当窗口的状态(如最大化、最小化、还原)发生变化时触发。用途: 用于监听窗口状态的变化,例如动态调整布局。
26. KeyDown
触发条件: 当用户按下键盘上的按键时触发。用途: 用于处理键盘按键事件,例如捕获快捷键。
27. KeyUp
触发条件: 当用户释放键盘上的按键时触发。用途: 用于处理键盘按键释放事件,例如检测按键状态。
28. TextInput
触发条件: 当用户通过键盘或其他输入设备输入文本时触发。用途: 用于处理文本输入事件,例如实时更新显示内容。
29. Initialized
触发条件: 当窗口完成初始化时触发。用途: 用于在窗口初始化后执行某些操作,例如加载数据或配置控件。
30. Loaded
触发条件: 当窗口及其所有子元素加载完成并显示时触发。用途: 用于在窗口完全加载后执行某些操作,例如动态加载数据。
31. Unloaded
触发条件: 当窗口从视觉树中移除时触发。用途: 用于在窗口卸载前执行清理操作,例如释放资源。