gpt4 book ai didi

c# - 如何创建一个可以在设计时订阅另一个 WinForm 控件的 C# 属性?

转载 作者:太空狗 更新时间:2023-10-29 23:13:38 27 4
gpt4 key购买 nike

我想在一个控件中创建一个属性,它将充当一个查看器,该查看器将能够连接到另一个非可视控件以显示其当前状态。在此示例中,假设查看器将简单地显示在线离线 的状态。

我希望能够删除一个非可视控件,我们称它为 Heater类型 IHeater , 在表格上然后放下 HeaterMonitor .我想进入 HeaterMonitor 的属性和自定义 Source属性查看所有 IHeaters 的列表目前在表格上。

Heater1 中选择一个实例 ( Source )属性(property)会订阅HeaterMonitor1 Heater1 生成的所有状态更新.

是否有可以作为模板遵循的现有模式?

如果有所不同,我可以使用 .net 3.5 及更高版本。我选择了 data-binding作为标签,但我不确定这是正确的,因为这不是数据库问题。但它看起来确实类似于 DataGridView选择 DataSource属性(property)。

编辑#1:根据目前的评论,我认为我没有足够强调我想要得到的东西。我希望属性编辑器列出符合条件的 IHeater窗体上的控件。我对创建常规 IHeater 没有问题我可以在运行时分配的属性。

最佳答案

要在设计器中拥有可在设计时使用的非 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; }
}

然后你可以在设计模式中使用它们(在组件托盘中):

enter image description here

并以这种方式选择来源:

enter image description here

关于c# - 如何创建一个可以在设计时订阅另一个 WinForm 控件的 C# 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34002533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com