在 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 的子控制項,在設計畫面中可以出現。
這樣就搞定了,使用方式就跟標準控制項一樣。