Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Winforms.Button.Text适用于数据绑定而不适用于ImageKey?_C#_.net_Winforms_Data Binding - Fatal编程技术网

C# 为什么Winforms.Button.Text适用于数据绑定而不适用于ImageKey?

C# 为什么Winforms.Button.Text适用于数据绑定而不适用于ImageKey?,c#,.net,winforms,data-binding,C#,.net,Winforms,Data Binding,有人知道这件事吗 上周我一直在尝试这个,但运气不好 现在我可以看到once可以成功绑定到按钮的文本属性,但不能绑定到按钮的ImageKey属性: myButton.Text = "new text"; // really changes the bound data myButton.ImageKey = "new text"; // does NOT change the bound data 我使用: myButton.DataBindings.Add ( new Binding ( "I

有人知道这件事吗

上周我一直在尝试这个,但运气不好

现在我可以看到once可以成功绑定到按钮的文本属性,但不能绑定到按钮的ImageKey属性:

myButton.Text = "new text"; // really changes the bound data
myButton.ImageKey = "new text"; // does NOT change the bound data
我使用:

myButton.DataBindings.Add ( new Binding ( "ImageKey", this.MyData, "Name", true, DataSourceUpdateMode.OnPropertyChanged ) );
为什么??是什么使装订生效的?我就是不明白

编辑:

我为自己的派生控件定义了这些:

public event EventHandler ImageKeyChanged;

protected virtual void OnImageKeyChanged ( EventArgs e )
{
    if ( ImageKeyChanged!= null )
    {
        ImageKeyChanged ( this, e );
    }
}

[Bindable ( true )]
public new string ImageKey
{
    get
    {
        return base.ImageKey;
    }
    set
    {
        base.ImageKey = value;
        this.OnImageKeyChanged ( EventArgs.Empty );
    }
}
它仍然不起作用。网上有没有一个教程或者什么的,展示了这一点。这对我来说根本不管用

…不会更改绑定的数据

对于双向绑定,您需要通知事件-可以采用两种常见形式:

公共事件事件处理程序{name}已更改;,例如,{name}是绑定属性ImageKeyChanged 对象可以实现INotifyPropertyChanged
这当然是对象控制绑定的工作方式;我很确定控制和目标检测非常相似。请注意,存在TextChanged事件,但没有ImageKeyChanged事件。

要使绑定工作,具有要绑定的属性的类需要为Text属性提供更改事件TextChanged,例如,或实现INotifyPropertyChanged。由于Button类不提供ImageKeyChanged事件,绑定无法订阅以获得更改通知。

谢谢。我实现了该事件,还更改了之前绑定的对象的inotifyproperty。但还是一样。我一定错过了什么。事实上,我认为它起作用了。我总是在一天结束时有这个,我会检查另一个属性。好吧,看起来除了ImageKey之外,我添加的另一个属性不起作用。你知道为什么会这样吗?所以我将ImageKey绑定到Name,在我做了您的更改之后,它就工作了。但是现在我为另一个属性写了完全相同的代码,没有新的,因为这个属性在基中不存在,但是现在相同的绑定数据属性没有改变。不管怎样,我想我是通过这些建议得到了它。对不起,这是我的错,但是是你和卢塞罗的回复帮了我。谢谢卢塞罗,我想我已经成功了。谢谢你和马克。我想接受这两个答案。