加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF – 用户控件内部的事件

发布时间:2020-12-16 01:42:16 所属栏目:百科 来源:网络整理
导读:尝试在 WPF中为自定义控件创建事件时遇到问题.我们的代码如下: public static readonly RoutedEvent KeyPressedEvent = EventManager.RegisterRoutedEvent( "keyPressed",RoutingStrategy.Bubble,typeof(KeyEventHandler),typeof(Keyboard)); public event
尝试在 WPF中为自定义控件创建事件时遇到问题.我们的代码如下:

public static readonly RoutedEvent KeyPressedEvent =
            EventManager.RegisterRoutedEvent(
                "keyPressed",RoutingStrategy.Bubble,typeof(KeyEventHandler),typeof(Keyboard));

    public event KeyEventHandler keyPressed
    {
        add { AddHandler(KeyPressedEvent,value); }
        remove { RemoveHandler(KeyPressedEvent,value); }
    }

void btnAlphaClick(object sender,RoutedEventArgs e)
    {
        var btn = (Button)sender;
        Key key = (Key)Enum.Parse(typeof(Key),btn.Content.ToString().ToUpper());
        PresentationSource source = null;
        foreach (PresentationSource s in PresentationSource.CurrentSources)
        {
            source = s;
        }
        RaiseEvent(new KeyEventArgs(InputManager.Current.PrimaryKeyboardDevice,source,key));

该控件是一个屏幕键盘,我们基本上需要传递给KeyPressedEventArgs给事件的订阅者详细说明按下了什么键(我们找不到太多帮助我们在WPF中使用它,只有winforms).

任何帮助,非常感谢!

public event KeyEventHandler keyPressed { add { AddHandler(KeyPressedEvent,key));

解决方法

步骤1:将事件处理程序添加到“确定”和“取消”按钮

private void btnOK_Click(object sender,RoutedEventArgs e)
{     
}

private void btnCancel_Click(object sender,RoutedEventArgs e)
{     
}

在UserControl1.xaml.cs文件中添加公共属性以与主机共享文本框的值

public string UserName
{
    get { return txtName.Text; }
    set { txtName.Text = value; }
}

声明可以通过Windows窗体订阅的Ok和Cancel按钮的事件.

public event EventHandler OkClick;
public event EventHandler CancelClick;

现在将代码添加到事件处理程序,以便我们也可以将事件提升为主机.

private void btnOK_Click(object sender,RoutedEventArgs e)
{
    if (OkClick != null)
        OkClick(this,e);
}

private void btnCancel_Click(object sender,RoutedEventArgs e)
{
    if (CancelClick != null)
        CancelClick(this,e);
}

第2步:在Windows窗体中处理WPF控件事件

在创建用户控件实例后立即将Handler添加到OKClick和CancelClick Events

_WPFUserControl.OkClick += new EventHandler(OnOkHandler);
_WPFUserControl.CancelClick += new EventHandler(OnCancelHandler);

在处理程序方法中编写代码.在这里,我在OK按钮处理程序中使用UserName属性,因此也显示了如何共享值.

protected void OnOkHandler(object sender,EventArgs e)
{
    MessageBox.Show("Hello: " +_WPFUserControl.UserName + " you clicked Ok Button");
}

protected void OnCancelHandler(object sender,EventArgs e)
{
    MessageBox.Show("you clicked Cancel Button");
}

参考:
http://a2zdotnet.com/View.aspx?Id=79

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读