在VS2005中设置WPF中自定义按钮的事件

简介: 原文:在VS2005中设置WPF中自定义按钮的事件 上篇讲了如何在Blend中绘制圆角矩形(http://blog.csdn.net/johnsuna/archive/2007/08/13/1740781.aspx),本篇继续下一步骤,如何自定义按钮的事件。
原文: 在VS2005中设置WPF中自定义按钮的事件

上篇讲了如何在Blend中绘制圆角矩形(http://blog.csdn.net/johnsuna/archive/2007/08/13/1740781.aspx),本篇继续下一步骤,如何自定义按钮的事件。

(1)首先,在VS2005中打开上篇所建的项目(File - Open Project),找到LinearGradientButton.csproj(这是我这里的项目名称),打开之后,双击LinearGradientDemo.xaml.cs,在LinearGradientDemo的构造函数的上面,键入:
Color initColor;//这句用来保存最初的按钮底色值

(2)在你所看到LinearGradientDemo的构造函数中有句this.InitializeComponent();,再在下面键入如下用灰色底突出颜色的代码,得到:
        public LinearGradientDemo()
  {
   this.InitializeComponent();

            this.RoundRect_LinearGradientBottom.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(ClickRect_MouseLeftButtonDown);
            this.RoundRect_LinearGradientBottom.MouseEnter += new System.Windows.Input.MouseEventHandler(EnterButton);
            this.RoundRect_LinearGradientBottom.MouseLeave += new System.Windows.Input.MouseEventHandler(LeaveButton);
            initColor = ((SolidColorBrush)(this.RoundRect_Bg.Fill)).Color;

  }
说明:
(a)这里的ClickRect_MouseLeftButtonDown是当鼠标左键在按钮上(确切地说是在RoundRect_LinearGradientBottom这个圆角矩形上)按下之后所发生的事件。
(b)EnterButton则是当鼠标进入RoundRect_LinearGradientBottom后所发生的事件(MouseEnter)。
(c)LeaveButton是当鼠标离开RoundRect_LinearGradientBottom后所发生的事件(MouseLeave)。

(3)键入下面代码:
        void ClickRect_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            MessageBox.Show("你点击我了!");
        }

        void EnterButton(object sender, System.Windows.Input.MouseEventArgs e)
        {
            this.RoundRect_Bg.Fill = new SolidColorBrush(Color.FromArgb(255, 200, 100, 0));
        }

        void LeaveButton(object sender, System.Windows.Input.MouseEventArgs e)
        {
            this.RoundRect_Bg.Fill = new SolidColorBrush(initColor);
        }

(4)按F5或Ctrl+F5运行它,得到如下所示界面:
渐变按钮运行窗口结果
当鼠标移进按钮时,颜色变了,离开后按钮颜色恢复为最初的颜色。
当鼠标点击按钮时,弹出“你点击我了!”的对话框。

这里用到了System.Windows.Shapes.Rectangle从UIElement继承的各种公共事件(详见SDK:ms-help://MS.LHSMSSDK.1033/MS.LHSNETFX30SDK.1033/fxref_presentationcore/html/229bc431-4295-fd39-706f-09abde5e7be5.htm)来实现自定义控件的事件处理。

目录
相关文章
|
3月前
|
开发框架 缓存 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
|
3月前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
104 0
|
3月前
|
开发框架 前端开发 JavaScript
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件
|
3月前
|
C#
WPF 自定义可拖动标题栏
WPF 自定义可拖动标题栏
51 0
|
3月前
|
开发框架 前端开发 C#
使用WPF开发自定义用户控件,以及实现相关自定义事件的处理
使用WPF开发自定义用户控件,以及实现相关自定义事件的处理
|
前端开发 C# 图形学
【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了。用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架。依赖属性(DependencyProperty)是为用户控件提供可支持双向绑定的必备技巧之一,同样用处也非常广泛。
949 0
【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
WPF中给TextBox/TextBlock设置提示文本
WPF中给TextBox/TextBlock设置提示文本
WPF中给TextBox/TextBlock设置提示文本
|
前端开发 C# Windows
WPF鼠标、键盘、拖拽事件、用行为封装事件
本文主要介绍了WPF中常用的鼠标事件、键盘事件以及注意事项,同时使用一个案例讲解了拓展事件。除此之外,本文还讲述如何用行为(Behavior)来封装事件。
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
WPF界面异常:未将对象引用设置到对象实例
WPF界面异常:未将对象引用设置到对象实例