如何将事件定义为返回标签集合的.cs类
本文关键字:集合 标签集 cs 标签 返回 事件 定义 | 更新日期: 2023-09-27 18:30:44
我有一个返回标签集合的方法,尽管我能够设置标签的属性,但我想定义标签的绘制事件,以便我可以以某种格式绘制项目。
public List<Label> drawLabel()
{
lstLable = new List<Label>();
foreach (cOrderItem item in currOrder.OrderItems)
{
_lbl = new Label();
_lbl.Width = 200;// (int)CanvasWidth;
_lbl.BackColor = Color.AliceBlue;
_lbl.Text = item.ProductInfo.ProductDesc;
_lbl.Height = 20;
_lbl.Dock = DockStyle.Top;
_lbl.Paint()////this is the event i want to define for drawign purpose.
lstLable.Add(_lbl);
}
return lstLable;
}
我将此集合返回到一个表单,在该表单中,我正在获取每个标签并添加到面板。
目前还不清楚你指的是winforms,wpf还是webforms,但在winforms中,只需像使用任何其他事件一样使用Control.Paint-event:
public List<Label> drawLabel()
{
lstLable = new List<Label>();
foreach (cOrderItem item in currOrder.OrderItems)
{
_lbl = new Label();
_lbl.Width = 200;// (int)CanvasWidth;
_lbl.BackColor = Color.AliceBlue;
_lbl.Text = item.ProductInfo.ProductDesc;
_lbl.Height = 20;
_lbl.Dock = DockStyle.Top;
//this is the event i want to define for drawign purpose.
_lbl.Paint += new PaintEventHandler(LblOnPaint);
lstLable.Add(_lbl);
}
return lstLable;
}
// The Paint event method
private void LblOnPaint(object sender, PaintEventArgs e)
{
// Example code:
var label = (Label)sender;
// Create a local version of the graphics object for the label.
Graphics g = e.Graphics;
// Draw a string on the label.
g.DrawString(label.Text, new Font("Arial", 10), Brushes.Blue, new Point(1, 1));
}
您可以订阅标签分类的绘制事件
_lbl.Paint+=yourCustomPaintMethod;
使用 ObservableCollection 而不是 List
您还可以学习使用反应式扩展。
我会对 Label 控件进行子类化并重写 OnPaint
方法。