如何在用户控件后面的代码中激发按钮单击事件? [英] How to fire a button Click event in code behind in user control?

查看:10
本文介绍了如何在用户控件后面的代码中激发按钮单击事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在用户控件的后台代码中激发按钮单击事件?

推荐答案

在C#中,事件只能从声明它们的类调用。对于Button,有一个名为onClick的方法,它引发ClickEvent,但它是受保护的。因此,您需要声明从Button继承的类,并更改onClick方法的可见性(或在调用base.OnClick的方法上声明一些)

public class MyButton : Button
{
    public new void OnClick()
    {
        base.OnClick();
    }
}

XAML示例

<StackPanel Background="White" >
    <my:MyButton x:Name="TestButton" Click="HandleClick" Content="Test" />
    <TextBlock x:Name="Result" />
</StackPanel>

和代码隐藏:

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        new Timer(TimerCall,null,0,1000);
    }

    private void TimerCall(object state)
    {
        Dispatcher.BeginInvoke(()=>TestButton.OnClick());
    }

    private void HandleClick(object sender, RoutedEventArgs e)
    {
        Result.Text = String.Format("Clicked on {0:HH:mm:ss}",DateTime.Now);
    }
}

尽管直接调用事件处理程序总是更容易。

HandleClick(this,null)

这样就不需要额外的管道了。

这篇关于如何在用户控件后面的代码中激发按钮单击事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆