我可以在C#中创建这种类型的事件吗?

时间:2010-11-26 23:45:15

标签: c# events

我的自定义用户控件中有一个List。我希望控件在每次更改列表的内容时重绘列表中的每个图像。移动,添加或移除物品都应该触发事件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WebServiceScanner
{
    public partial class imageList : UserControl
    {
        public imageList()
        {
            InitializeComponent();
        }

        public List<Image> Images { get; set; }

        public void AddImage(Image image)
        {
            Images.Add(image);
        }

        public void RemoveImage(Image image)
        {
            Images.Remove(image);
        }

        public void MoveImageLeft(int index)
        {
            Image tmpImage = Images[index];
            Images[index] = Images[index - 1];
            Images[index - 1] = tmpImage;
        }

        public void MoveImageLeft(int index)
        {
            Image tmpImage = Images[index];
            Images[index] = Images[index + 1];
            Images[index + 1] = tmpImage;
        }
    }
}

可以这样做吗?

感谢您的指导!渴望学习!

3 个答案:

答案 0 :(得分:4)

您可以使用ObservableCollection<T>代替List<T>并处理其CollectionChanged事件。

答案 1 :(得分:0)

public partial class imageList : UserControl
    {

        public event OnChange;

        public imageList()
        {
            InitializeComponent();
        }

        public List<Image> Images { get; set; }

        public void AddImage(Image image)
        {
            Images.Add(image);
            this.OnChange();
        }

        public void RemoveImage(Image image)
        {
            Images.Remove(image);
            this.OnChange();
        }

        public void MoveImageLeft(int index)
        {
            Image tmpImage = Images[index];
            Images[index] = Images[index - 1];
            Images[index - 1] = tmpImage;
            this.OnChange();
        }

        public void MoveImageLeft(int index)
        {
            Image tmpImage = Images[index];
            Images[index] = Images[index + 1];
            Images[index + 1] = tmpImage;
            this.OnChange();
        }
    }

答案 2 :(得分:0)

您也可以尝试使用BindingList。这里讨论的差异如下: https://stackoverflow.com/questions/4284663/...