delete
delete

Reputation:

Can I create this type of event in C#?

I have a List in my custom user control. I'd like the control to redraw the each Image in the List whenever the contents of that list is changed. Either a movement, addition or removal of an items should fire an event.

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;
        }
    }
}

Can this be done?

Thanks for your guidance! Eager to learn!

Upvotes: 1

Views: 139

Answers (3)

Prasanna K Rao
Prasanna K Rao

Reputation: 1086

You could also try using the BindingList. The differences are discussed in here: https://stackoverflow.com/questions/4284663/...

Upvotes: 0

Ali Tarhini
Ali Tarhini

Reputation: 5358

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();
        }
    }

Upvotes: 0

Fr&#233;d&#233;ric Hamidi
Fr&#233;d&#233;ric Hamidi

Reputation: 262939

You can use an ObservableCollection<T> instead of a List<T> and handle its CollectionChanged event.

Upvotes: 4

Related Questions