首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyGrid缺少textChanged事件

PropertyGrid缺少textChanged事件
EN

Stack Overflow用户
提问于 2013-02-14 05:43:38
回答 1查看 837关注 0票数 0

我的propertyGrid出了点问题。

我有一个名为DummySettings的类,它映射到propertyGrid,我有一个属性"Name“

当在属性网格EG的Name属性中键入内容时,我想引发一个事件,即"TextChanged“

尽管实现了INotifyPropertyChanged事件并引发了它,尽管挂起了我能在propertyGrid上想到的各种事件,但当A文本发生变化时,这些事件都不会触发。

我是不是错过了显而易见的东西?

编辑过的

Psuedo代码

代码语言:javascript
复制
   public class DummySettings : INotifyPropertyChanged
            {
                private string name;


                [DisplayName("Name")]
                public string Name
                {
                    get { return name; }
                    set
                    {
                        if (name != value)
                        {
                          name = value;
                         OnPropertyChanged("Name");
                        }
                    }
                }

                public event PropertyChangedEventHandler PropertyChanged;

                protected virtual void OnPropertyChanged(string propertyName)
                {
                    PropertyChangedEventHandler handler = PropertyChanged;
                    if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
                }
            }



        //UserControl
    public partial class DummyControl : UserControl
    {
     private DummySettings settings;

     ///Constructor
    public DummyControl()
    {
        InitializeComponent();

        settings = new DummySettings();
        propertyGrid1.SelectedObject = settings;
        settings.PropertyChanged += OnDummyPropertyChanged;


     //All the events I have hooked up but not firing when text is changed 
    private void OnDummyPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
          btnToEnable.Enabled = HasName();
    }        
     private void propertyGrid1_Leave(object sender, EventArgs e)
    {
               btnToEnable.Enabled = HasName();
    }

    private void propertyGrid1_Validating(object sender, CancelEventArgs e)
    {
        btnToEnable.Enabled = HasName();
    }

    private void propertyGrid1_SelectedObjectsChanged(object sender, EventArgs e)
    {
          btnToEnable.Enabled = HasName();
    }


    private void propertyGrid1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
         btnToEnable.Enabled = HasName();
    }

      private bool HasName()
    {
        return settings.Name.IsNotNullOrEmpty();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 05:54:44

您可以使用PropertyValueChanged事件在PropertyGrid中获得所选对象属性更改的通知。因此,当您将Name属性值从"Foo“更改为"Bar”时,将引发此事件:

代码语言:javascript
复制
void propertyGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
    // previous value is e.OldValue, "Foo"
    // property name is e.ChangedItem.Label, "Name"
    // new value is e.ChangedItem.Value, "Bar"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14863737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档