2012-03-24 2 views
-1
public class Car 
{ 
    public string StreetName; 
    public RectangleShape Car_Shape; 
    public int ArrivalTime, Axis, Lane; 
    public string Direction; 
    public double Car_Delay; 
    public bool Mobile; 
    public Stopwatch Sw = new Stopwatch(); 
    public Car(int ArriT) 
    { 
     ArrivalTime = ArriT; 
    } 
    public void SetDelay() 
    { 
    } 
} 

Это код, я добавляю каждую прямоугольную форму при создании экземпляра «Car» в ShapeContainer на главной форме, что я хочу сделать, когда я нажимаю на любую из форм, данные, относящиеся к этой форме показаны в текстовом поле, как «направление», или «Задержка» Я пытался использовать делегацию, я сделал событие, но я не могу пройти ...прямоугольной формы События Программным

Счетчики

Спасибо большое

+0

Вы можете разместить свой код формы, а? Вам обязательно нужно будет сохранить созданные экземпляры автомобилей, а затем выяснить, какой из них был «нажат», возможно, в переопределенном методе OnClick() формы ... – Alan

+0

, пожалуйста, не включайте язык в заголовок. То, что теги для –

ответ

0

Используйте класс формы прямоугольного прямоугольника, который реализует события, или иначе просто создайте пользовательский элемент управления для Rectangle и просто прослушайте событие click. чтобы распознать, какой автомобиль подходит для прямоугольника, вы можете сохранить словарь, но это было бы ужасно, или вы можете самим автомобилем быть также пользовательским элементом управления, который прослушивает событие щелчка прямоугольника и вызывает его собственное событие click, так что вы можете получить доступ ко всем свойства автомобиля через параметр отправителя события.

0

(извините за мой плохой английский)

ли ваш RectangleShape рейз Нажмите или MouseDownEvents? Если да, то вы могли бы сделать что-то вроде:

public class Car 
{ 
    public string StreetName; 
    public RectangleShape Car_Shape; 
    public int ArrivalTime, Axis, Lane; 
    public string Direction; 
    public double Car_Delay; 
    public bool Mobile; 
    public Stopwatch Sw = new Stopwatch(); 

    public Action<Car> ShapeClicked; 

    public Car(int ArriT, Action<Car> shapeClicked) 
    { 
     ArrivalTime = ArriT; 
     this.ShapeClicked = shapeClicked; 

     Car_Shape.Click += (sd,args) => 
     { 
      if (Clicked != null) 
       Clicked(this); 
     }; 

    } 
    public void SetDelay() 
    { 
    } 
} 

Для использования легко:

Car car = new Car(0, OnShapeClicked); 

public void OnShapeClicked(Car car) 
{ 
    MessageBox.Show(car.Direction); 
} 

или

Car car = new Car(0, (c) => 
{ 
    MessageBox.Show(c.Direction); 
});