|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.11.2010, 10:11 | #1 |
Новичок
Джуниор
Регистрация: 27.11.2010
Сообщений: 1
|
Создание компонента на С#
Всем привет)
Ребята, такая штука, хочу написать компонент типа BlsCompnt на шарпе,рассматриваю пример. вот текст проги: using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.Collections; using System.ComponentModel; namespace csBall_a_Dll { public class CompEventArgs:EventArgs { public int numCompnt; public Point point; public CompEventArgs (int NumCompnt,Point pnt) { numCompnt=NumCompnt; point=Pnt; } } public delegate void CompEventHandler (object o,CompEventArgs e); public class BlsCompnt: Component { public event EventHandler Disposed; public event CompEventHandler compEvent; private int numCompnt; private Size clientSize; private int dX; private int dY; private Point point; private bool life; private bool run; private Thread thread; private bool near; private int distance; private ArrayList list; public BlsCompnt (int NumCompnt,Point Pnt,int Dx,int Dy,Size ClientSize) { distance=10; near=false; list=ArrayList(); Disposed=null; numCompnt=NumCompnt; clientSize=ClientSize; point=Pnt; dX=Dx; dY=Dy; life=false; run=false; thread=new Thread (new ThreadStart(ThreadFunc)); } public int Number { get { return numCompnt; } } public bool Near { get { return near; } } public Point Point { get { return point; } } public virtual new void Dispose () { if (Disposed !=null) { Disposed (this,EventArgs.Empty); } } public void Run () { if(life) { life=true; run=true; thread.Start(); } if(life && !run) { run=true; thread.Resume(); } } public void Stop() { if (life && run) { run=false; thread.Suspend(); } } public void Finish() { life=false; run=false; } private void ThredFunc() { int n=0; while (life) { n++; point Offset (dX,dY); if (point.X < 0 || point.X > clientSize.Width) dX=-dX; if (point.Y < 0 || point.Y > clientSize.Height) dY=-dY; if (compEvent !=null) { CompEventArgs compArgsChange=new CompEventArgs (numCompnt,point); compEvent (this,compArgsChange); } Thread.Sleep (30); } Console.Write ("\n Компонент "+numCompnt+"finished"); } public void HandlerBalls (object sender,CompEventArgs arg) { Monitor.Enter (this); Console.WriteLine ("-----------------------"); Console.WriteLine ("Обработчик компонента"+numCompnt +"Предыдущее near="+near); bool isNear=((Math.Abs(arg.point.X-point.X) < distance)&&(Math.Abs(arg.point.Y-point.Y) < distance)); bool isHave=false; IEnumerator inum = list.GetEnumerator(); while (Inum.MoveNext()) { int numb = (int)Inum.Current; if(numb==arg.numCompnt) { isHave=true; break; } } Console.WriteLine("После просмотра списка isNear="+isNear+"isHave="+isHave+"C ount="+listCount); if(!isHave && isNear) { list.Add (arg.numCompnt); Console.WriteLine("\nAdd"); } if(isHave && !isNear) { list.Remove (arg.numCompnt); Console.WriteLine("\nRemove"); } if(listCount==0) if(near) near=false; if(listCount!==0) if(!near) near=true; Console.Write("Координаты компонента"+numCompnt); Console.WriteLine("point.X="+point. X+"point.Y"+point.Y); Console.Write ("Координаты компонента"+arg.numCompnt); Console.WriteLine ("Компонент"+arg.point.X+"point.Y"+ arg.point.Y); Console.WriteLine("Компонент"+numCo mpnt+"Новое near="+near); Monitor.Exit(this); } } } работаю через SharpDevelop, не знаю в чем причина, ругается на Dispose,я пока не очень хорошо знаю шарп, может кто объяснит? буду очень признателен |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание компонента | nXs | Компоненты Delphi | 7 | 16.05.2010 12:13 |
Создание компонента | sashchernun | Компоненты Delphi | 2 | 01.03.2010 00:10 |
Динамическое создание компонента из компонента)) | Impuls1989 | Компоненты Delphi | 8 | 22.10.2009 00:08 |
Создание компонента | Neobrat | Компоненты Delphi | 3 | 01.05.2009 09:52 |
Создание компонента. | Черничный | Компоненты Delphi | 2 | 01.06.2008 23:28 |