1 接口类
public interface ICustom
{
/// <summary>
/// アドレスキー
/// </summary>
AddressKey Key
{
get;
}
/// <summary>
/// キーをセット
/// </summary>
/// <param name="key"></param>
void SetKey(AddressKey key);
string Value
{
get;
}
/// <summary>
/// アドレス文字列
/// </summary>
string AddressString
{
get;
}
/// <summary>
/// アドレス設定
/// </summary>
/// <param name="address"></param>
void SetAddressString(string address);
/// <summary>
/// 値設定
/// </summary>
/// <param name="value"></param>
void SetValue(int value);
//void GetValue();
}
2 具体实现类
public partial class CustomLabel : System.Windows.Forms.Label,ICustom
{
public CustomLabel()
{
InitializeComponent();
}
public CustomLabel(IContainer container)
{
container.Add(this);
InitializeComponent();
}
/// <summary>
/// アドレスキー
/// </summary>
public AddressKey Key
{
get;
private set;
}
/// <summary>
/// キーをセット
/// </summary>
/// <param name="key"></param>
public void SetKey(AddressKey key)
{
this.Key = key;
}
/// <summary>
///
/// </summary>
public string AddressString
{
get;
private set;
}
/// <summary>
///
/// </summary>
/// <param name="address"></param>
public void SetAddressString(string address)
{
this.AddressString = address;
}
/// <summary>
/// 値
/// </summary>
public string Value
{
get;
private set;
}
/// <summary>
/// 背景設定
/// </summary>
/// <param name="value"></param>
public void SetValue(int value)
{
//------------------------------------------这里可以写任意需求---------------------------------
if (value == 0)
{
//ラベル灰色
this.BackColor = SystemColors.Control;
}
else
{
//ラベルオレンジ
this.BackColor = Color.Orange;
}
}
}
调用
List<ICustom> custmLabelList = new List<ICustom>();
/// <summary>
/// 値変更時発生
/// </summary>
/// <param name="ev"></param>
public void OnPLCAddressChange(PLCAccessLib.Args.AddressValueChangeEventArgs ev)
{
var target = custmLabelList.FirstOrDefault((item) => item.Key == ev.AddressIndex.KeyName);
if (target != null)
{
this.AsyncDispatchToContext(() =>
{
target.SetAddressString(ev.AddressIndex.Address);
target.SetValue(ev.Value);
this.ToolTip.SetToolTip((Control)target, target.AddressString);
});
}
}