在 Windows Forms 當中,只要是繼承自 Control 的控制項,都有實作 IBindableComponent 這個介面,都具有資料綁定的能力,但是有一些控制項就沒有,例如:ToolStripStatusLabel,不過也不是不能做資料綁定,加給它就好了。
ToolStripStatusLabel 是 StatusStrip 的子控制項,沒有繼承自 Control 類別,自然就沒有實作 IBindableComponent 介面。

那也沒有關係,沒有的,就加給它就好了,我們新增一個 BindableToolStripStatusLabel 類別,繼承 ToolStripStatusLabel 並且實作 IBindableComponent。
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class BindableToolStripStatusLabel : ToolStripStatusLabel, IBindableComponent
{
    private ControlBindingsCollection dataBindings;
    private BindingContext bindingContext;
    public ControlBindingsCollection DataBindings => this.dataBindings ?? (this.dataBindings = new ControlBindingsCollection(this));
    public BindingContext BindingContext
    {
        get => this.bindingContext ?? (this.bindingContext = new BindingContext());
        set => this.bindingContext = value;
    }
}
其中 ToolStripItemDesignerAvailability Attribute 是讓這個 StatusStrip 的子控制項,在設計畫面中可以出現。

這樣就搞定了,使用方式就跟標準控制項一樣。

