为什么我的“事件”总是空?

2023-12-23

我正在尝试连接一个新事件,但由于某种原因“更改”总是评估为空

    public class MyTreeViewItem : INotifyPropertyChanged

{
        private MyTreeViewItem _parent;

        public MyTreeViewItem(MyTreeViewItem parent)
        {
            _parent = parent;
        }

        private bool _checked;
        public bool Checked
        {
            get
            {
                return _checked;
            }
            set
            {
                if (value != _checked)
                {
                    _checked = value;
                    OnChanged("test");
                    OnPropertyChanged("Checked");
                }
            }
        }

        public event EventHandler Changed;

        public ObservableCollection<MyTreeViewItem> Children { get; set; }

    // Invoke the Changed event; called whenever list changes
    protected virtual void OnChanged(string test)
    {
        if (Changed != null)
            Changed(this, null);
    }

订阅代码(PropertyChanged 有效,Changed 无效)

_playgroupTree = new MyTreeViewItem(null);
AddChildNodes(4, ref _playgroupTree);
_playgroupTree.Changed += new EventHandler(_playgroupTree_Changed);
_playgroupTree.PropertyChanged += new PropertyChangedEventHandler(_playgroupTree_PropertyChanged);

真的很奇怪,因为我也在实现 INotifyPropertyChanged (有效),并且这段代码几乎完全相同(我尝试使用相同的 deligate 类型,但仍然不起作用。

我一直使用这个网站作为参考http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx


好吧,您还没有显示任何订阅该事件的代码。哪里有这样的代码:

YourClass yc = new YourClass();
yc.Changed += SomeHandler;

?如果你能制作一个简短但complete程序演示问题,诊断起来会容易得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的“事件”总是空? 的相关文章

随机推荐