我将使用OPC制作工业HMI应用程序。我想用单选按钮显示PLC的变量。但我想在radiobutton属性区域选择plc变量。有一个类包含所有PLC的变量。我想为这个类中的每个radiobutton选择不同的变量。如果变量为真,则会进行检查。
要做到这一点,我想在c#上制作自定义单选按钮,并为其添加自定义属性。
我可以创建一个自定义单选按钮,但我无法将其属性区域与另一个类varibales相关联。当我点击属性区域时它应该显示类的所有变量
我该怎么做?
public partial class My_RadioButton : RadioButton
{
private VarsFromPLC _FrPLC;
[Description("Displaying PLC Variables"),
Category("Appearance"),
TypeConverter(typeof(VarsFromPLC)),
Browsable(true)]
public VarsFromPLC FrPLC
{
get { return _FrPLC; }
}
public My_RadioButton()
{
_FrPLC = new VarsFromPLC();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
public class VarsFromPLC
{
public bool bTry1 { get; }
public bool bTry2 { get; }
public bool bTry3 { get; }
public bool bTry4 { get; }
public bool bTry5 { get; }
public bool bTry6 { get; }
public bool bTry7 { get; }
public bool bTry8 { get; }
public bool bTry9 { get; }
public bool bTry10 { get; }
}
答案 0 :(得分:1)
在您阅读有关将此类下拉列表添加到属性网格的答案之前,请考虑以下注意事项:
使用一组RadioButton
控件就像使用ComboBox
在可用选项中显示/修改所选选项一样。
如果要显示这些属性的值,您似乎正在寻找数据绑定。
如果只能将其中一个属性设置为true
,则可以创建一组RadioButton
控件,并将每个控件绑定到该类的相应属性。这样,单选按钮可用于显示/修改这些属性
注意:在这种情况下,让enum包含所有选项并且只是该类中该枚举类型的单个属性似乎更好。
如果多个属性可以包含true
个值,则可以使用一组CheckBox
控件并将它们绑定到该类的相应属性。
无论如何,如果你想在属性网格中显示这样的下拉菜单,你可以使用以下任一选项:
Enum
并定义该枚举类型的属性。这样,您的属性的属性网格中将显示下拉列表。 (最简单的选项)您可以为您的媒体资源注册自定义TypeConverter
,并覆盖GetStandardValuesSupported
为要在下拉菜单中显示的媒体资源提供一些标准值。要查看示例,请查看:Type Converters That Provide a List of Standard Values to a Properties Window
您可以为该物业注册UITypeEditor
。作为示例,请查看Walkthrough: Implementing a UI Type Editor