我想在控件中创建一个属性,该控件将充当一个能够连接到另一个非可视控件以显示其当前状态的查看器。在这个例子中,假设观众只会显示在线或离线的状态。
我希望能够删除非可视控件,让我们在表单上将其命名为Heater
IHeater
,然后删除HeaterMonitor
。我想进入HeaterMonitor
的属性,对于自定义Source
属性,请查看表单上当前所有IHeaters
的列表。
在Heater1
属性中选择一个实例(Source
)会将HeaterMonitor1
订阅Heater1
生成的所有状态更新。
我可以将现有模式作为模板吗?
如果它有所作为,我可以使用.net 3.5及更高版本。我选择data-binding
作为标记,但我不确定这是否正确,因为这不是数据库问题。但它似乎与DataGridView
选择DataSource
属性类似。
编辑#1:
根据迄今为止的评论,我认为我没有强调我想要得到的东西。我希望属性编辑器列出表单上符合条件的IHeater
控件。我在创建可以在运行时分配的常规IHeater
属性时没有问题。
答案 0 :(得分:5)
要在设计器中拥有可在设计时使用的非UI元素,您可以从Component
继承。
using System.ComponentModel;
public interface IHeater
{
int Temperature { get; set; }
}
public class Heater : Component, IHeater
{
public int Temperature
{
get;
set;
}
}
public class HeaterMonitor:Component
{
public IHeater Source { get; set; }
}
然后您可以在设计模式中使用它们(在组件托盘中):
以这种方式选择来源: