如何将事件定义为返回标签集合的.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;
        }

将此集合返回到一个表单,在该表单中,我正在获取每个标签并添加到面板。

如何将事件定义为返回标签集合的.cs类

目前还不清楚你指的是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 方法。