自定义控件事件

    在WPF中,自定义控件是非常强大的功能,可以任由自己编写自己想要的控件,熟悉winform开发的人,对控件的认识不会不清楚,控件中事件,往往是实现各种功能的必要手段,那么在WPF自定义控件中,是否可以自定义一些事件呢,答案是肯定的,这篇文章就简单介绍下如何给自定义控件中添加事件。----姜彦 20170926

   在本人某个项目中,由于需要,一个自定义控件中,我放置了多个按钮,我想做的是如何给每个按钮自定义一个事件,以便于其他View添加了这个新的自定义控件时,可以分别使用其中的某个单独的事件,以实现事件的传递,下来开始介绍下自己是如何做的。

   如图,是我项目中,自己编写的一个自定义控件:TCellView

  

  从图上可以看出,我放置了6个button按钮,我想做的是如何给每个button一个独立的事件,然后让这个自定义控件TCellView的事件中,有这些事件。

  步骤1:

            在自定义控件TCellView中,点击btn1,在代码中就会出现btn1的Click事件。其他按钮以此类推,为了方便区别每个按钮,可以增加一个Tag来标记按钮

          

 1 <Button Name="btn1" 
 2                             Content="按键1" 
 3                             Height="20" 
 4                             HorizontalAlignment="Left" 
 5                             Margin="40,0,0,0"                     
 6                             VerticalAlignment="Top" 
 7                             Width="40"
 8                             Background="#FF1B3765"
 9                             Style="{StaticResource CommonButtonStyle}" 
10                             Tag="1"    
11                             Click="btn1_Click" 
12                                 />
13 
14                         <Button Name="btn2" 
15                             Content="按键2" 
16                             Height="20" 
17                             HorizontalAlignment="Left" 
18                             Margin="40,25,0,0"                     
19                             VerticalAlignment="Top" 
20                             Width="40"
21                             Background="#FF1B3765"
22                             Style="{StaticResource CommonButtonStyle}"
23                             Tag="2"    
24                             Click="btn1_Click" 
25                     />
26 
27                         <Button Name="btn3" 
28                             Content="按键3" 
29                             Height="20" 
30                             HorizontalAlignment="Left" 
31                             Margin="40,50,0,0"                     
32                             VerticalAlignment="Top" 
33                             Width="40"
34                             Background="#FF1B3765"
35                             Style="{StaticResource CommonButtonStyle}"
36                             Tag="3"    
37                             Click="btn1_Click" 
38                     />
39 
40 
41                         <Button Name="btn4" 
42                             Content="按键4" 
43                             Height="20" 
44                             HorizontalAlignment="Left" 
45                             Margin="40,75,0,0"                     
46                             VerticalAlignment="Top" 
47                             Width="40"
48                             Background="#FF1B3765"
49                             Style="{StaticResource CommonButtonStyle}"
50                             Tag="4"    
51                             Click="btn1_Click" 
52                     />
View Code

 

 步骤2:

        在cs文件里,开始编写具体的事件实现逻辑。

        1.首先定义一个按钮事件的委托的句柄;

        2.然后定义具体的按钮事件;

        3.通过按钮的Click事件来实现传递

       

 1 #region 事件
 2 
 3         #region 按钮事件
 4 
 5         /// <summary>
 6         /// 按钮事件委托
 7         /// </summary>
 8         /// <param name="sender"></param>
 9         /// <param name="e"></param>
10         public delegate void BtnClickHandle(object sender, EventArgs e);
11         
12         /// <summary>
13         /// btn1 Click事件
14         /// </summary>
15         public event BtnClickHandle btn1Click;
16 
17         /// <summary>
18         /// btn2 Click事件
19         /// </summary>
20         public event BtnClickHandle btn2Click;
21 
22         /// <summary>
23         /// btn3 Click事件
24         /// </summary>
25         public event BtnClickHandle btn3Click;
26 
27         /// <summary>
28         /// btn4 Click事件
29         /// </summary>
30         public event BtnClickHandle btn4Click;
31 
32         /// <summary>
33         /// btn5 Click事件
34         /// </summary>
35         public event BtnClickHandle btn5Click;
36 
37         /// <summary>
38         /// btn6 Click事件
39         /// </summary>
40         public event BtnClickHandle btn6Click;
41 
42 
43 
44         private void btn1_Click(object sender, EventArgs e)
45         {
46 
47             int Tag = int.Parse((sender as Button).Tag.ToString());
48 
49             switch (Tag)
50             { 
51                 case 1:
52                     if (btn1Click != null)
53                     btn1Click(sender, new EventArgs());//把按钮自身作为参数传递
54                     break;
55 
56                 case 2:
57                     if (btn2Click != null)
58                     btn2Click(sender, new EventArgs());
59                     break;
60 
61                 case 3:
62                     if (btn3Click != null)
63                         btn3Click(sender, new EventArgs());
64                     break;
65 
66                 case 4:
67                     if (btn4Click != null)
68                         btn4Click(sender, new EventArgs());
69                     break;
70 
71                 case 5:
72                     if (btn5Click != null)
73                         btn5Click(sender, new EventArgs());
74                     break;
75 
76                 case 6:
77                     if (btn6Click != null)
78                         btn6Click(sender, new EventArgs());
79                     break;
80 
81                 default: break;
82             
83             }
84             
85         } 
86 
87      
88 
89         #endregion
90 
91         #endregion
View Code


    接下来,我们在任意一个view里,拖入我们的自定义控件TCellView,然后点击属性-事件,看下,就能看到自己定义的事件了

   

       

 

转载于:https://www.cnblogs.com/jiangyan219/articles/7602410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值