wpf 全网最全!窗体(Windows)的常见事件及其详细解释

wpf 全网最全!窗体(Windows)的常见事件及其详细解释

文章目录

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

触发条件: 当窗口从视觉树中移除时触发。用途: 用于在窗口卸载前执行清理操作,例如释放资源。

📚 相关推荐

Dell新版BIOS设置U盘启动的方法
1990年國際足協世界盃
世界杯亚洲六张直通门票归属渐明朗 出线形势趋明朗
金球奖 (足球)
Full的用法為何?同義詞有哪些?
哪些品牌的商标上有十字架