5/14/2012

Demo using CollectionBase (Set - Get fields in Struct or Object)

using System;
using System.Collections;
using System.Windows.Forms;

namespace WindowsApplication5
{
    public partial class Form1 : Form
    {
        Collection collection1 = new Collection();
        Collection collection2 = new Collection();

        public Form1()
        {
            InitializeComponent();
        }

        private void TurnIn_Click_1(object sender, EventArgs e)
        {
            // them vao collection
            collection1.Add(int.Parse(txtAge.Text), txtName.Text);
            lblStatus.Text = "Test " + txtAge.Text + " added.";
        }

        private void LookAt_Click_1(object sender, EventArgs e)
        {
            bool FirstCheck = collection2.Count() == 0;
            bool bThoat = false;

            while (collection1.Count() > 0 && !bThoat)
            {
                int x = collection1.Count() - 1;
                // copy phan tu cuoi cung cua collection1 thanh phan tu dau tien cua collection2
                collection2.Insert(collection1.GetID(x), collection1.GetName(x), 0);

                // xoa phan tu cuoi cung cua collection1
                collection1.RemoveAt(x);

                // kiem tra phan tu nay co la bai test dang tim
                if (collection2.GetID(0) == int.Parse(txtAge.Text))
                {
                    MessageBox.Show("Student Name is: " + collection2.GetName(0));
                    bThoat = true;
                }
            }

            if (!bThoat) // neu khong tim thay bai test nao
                if (FirstCheck)
                    MessageBox.Show("Test not found.");
                else
                    MessageBox.Show("Please click RETURN A TEST button to reset this result.");
        }        

        private void Return_Click_1(object sender, EventArgs e)
        {
            // chuyen tat ca phan tu cua collection2 vao lai collection1
            while (collection2.Count() > 0)
            {
                collection1.Add(collection2.GetID(0), collection2.GetName(0));
                collection2.RemoveAt(0);
            }
        }     
    }

    public class Collection : CollectionBase
    {
        public struct TuTao
        {
            public int Age;
            public string Name;
        }

        public void Add(int Age, string Name)
        {
            TuTao temp = new TuTao();
            temp.Age = Age;
            temp.Name = Name;
            InnerList.Add(temp);
        }

        public void RemoveAt(int Vitri)
        {
            InnerList.RemoveAt(Vitri);
        }

        public void Insert(int Age, string Name, int Vitri)
        {
            TuTao temp = new TuTao();
            temp.Age = Age;
            temp.Name = Name;
            InnerList.Insert(Vitri, temp);
        }

        public int Count()
        {
            return InnerList.Count;
        }

        public string GetName(int Vitri)
        {
            TuTao temp = (TuTao)InnerList[Vitri];
            return temp.Name;
        }

        public int GetID(int Vitri)
        {
            TuTao temp = (TuTao)InnerList[Vitri];
            return temp.Age;
        }
    }        
}

Demo 2

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace CTDL_Chap01_Ex4
{
    class Program
    {
        static void Main(string[] args)
        {
            SinhVien A = new SinhVien();
            A.Add("Le Thanh Dat");
            A.Add("Vo Thuy Lien Tinh");
            A.Add("Nguyen Thi My Hanh");

            SinhVien B = new SinhVien();
            B.Add("http://www.vnxsoft.com");
            B.Add("http://www.microsoft.com");

            Console.WriteLine("Truoc khi swap:");
            for (int i = 0; i < A.Count(); i++)
                Console.WriteLine(A.GetName(i));
            Console.WriteLine();
            for (int i = 0; i < B.Count(); i++)
                Console.WriteLine(B.GetName(i));

            Swap<SinhVien>(ref A, ref B);

            Console.WriteLine("\r\n\r\nSau khi swap:");
            for (int i = 0; i < A.Count(); i++)
                Console.WriteLine(A.GetName(i));
            Console.WriteLine();
            for (int i = 0; i < B.Count(); i++)
                Console.WriteLine(B.GetName(i));

            Console.ReadLine();
        }

        public static void Swap<T>(ref T v1, ref T v2)
        {
            T temp = (T)v1;
            v1 = v2;
            v2 = temp;
        }
    }

    class SinhVien : CollectionBase
    {
        public void Add(object item)
        {
            InnerList.Add(item);
        }

        public string GetName(int Vitri)
        {
            return InnerList[Vitri].ToString();
        }

        public int Count()
        {
            return InnerList.Count;
        }
    }
}

1 comments:

This comment has been removed by a blog administrator.

Post a Comment

 
  • I'm a great believer that any tool that enhances communication has profound effects in terms of how people can learn from each other, and how they can achieve the kind of freedoms that they're interested in.

  • Followers