PDA

View Full Version : ایجاد event در کلاس shape



ghazal_mohammady
جمعه 19 اردیبهشت 1393, 19:57 عصر
عرض سلام و ادب، میخوام یه eventChange بنویسم توی یه کلاسی به نام shape که وقتی مقادریر xوy عوض شد، این Event فراخوانی شه، کجا باید بنویسمش؟



public int Xwidth { get; set;if(LocationChange!=null) LocationChange(this,EventArgs.Empty); }



اینطور که مینویسمش ارور میگیره!

Mahmoud.Afrad
جمعه 19 اردیبهشت 1393, 21:48 عصر
منظورت از x , y چیه؟ مکان یا اندازه؟
کد کاملتری نیازه بزاری. اگر میتونی کلاس رو بزار.
در کل در setter اگر مقدار جدید با قبلی متفاوت بود میتونی رویداد رو raise کنی.

ghazal_mohammady
جمعه 19 اردیبهشت 1393, 22:18 عصر
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace PaintFillAndNotFill
{
abstract class Shape:IDrawabel
{
public Color Color { get; set; }
public List<Shape> Shapes { get; set; }
public int width { get; set; }
public int style { get; set; }
public int X {
get
{
return this.X;
}
set
{
//X = value;
if (LocationChange != null)
LocationChange(this, EventArgs.Empty);
}
}
public int Y {
get
{
return this.Y;
}
set
{
X = value;
if (LocationChange != null)
LocationChange(this, EventArgs.Empty);
}
}
public void Draw(Graphics graph) { }
public enum Style { Dot, Dash,DashDotDot,Solid };
public event EventHandler LocationChange;
}
}



که از مقداردهی ها ارور می گیره

Mahmoud.Afrad
جمعه 19 اردیبهشت 1393, 22:34 عصر
abstract class Shape : IDrawabel
{
public enum Style { Dot, Dash, DashDotDot, Solid };
public event EventHandler LocationChanged;

public Color Color { get; set; }
public List<Shape> Shapes { get; set; }
public int width { get; set; }
public int style { get; set; }

private int x;
private int y;

public int X
{
get
{
return x;
}
set
{
if (value != x)
{
x = value;
OnLocationChanged(EventArgs.Empty);
}
}
}
public int Y
{
get
{
return y;
}
set
{
if (value != y)
{
y = value;
OnLocationChanged(EventArgs.Empty);
}
}
}

public void Draw(Graphics graphic)
{

}

virtual void OnLocationChanged(EventArgs e)
{
if (LocationChanged != null)
{
LocationChanged(this, e);
}
}
}

ghazal_mohammady
شنبه 20 اردیبهشت 1393, 08:16 صبح
بسیار سپاس گزارم
یه سوال دیگه، بنده تعدادی شکل روی panel کشیدم، حالا میخوام با کلیک موس انتخاب بشن و با کیبور حرکت داده بشه، اینکه بخوام بگم کدوم آبجکت روی پنل انتخاب شده باید از چه دستوری استفاده کنم؟آیا پنل دستور current داره که به آبجکت فعلی اشاره کنه؟