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

이 코드는 기본 폼의 ShapeContainer에 "Car"인스턴스를 만들 때 모든 직사각형 모양을 추가합니다. 원하는 모양을 누르면, 이 형태에 관련된 데이터는 ... 내가 이벤트를했다하지만 난 PARAMATERS을 통과 할 수없는, 내가 위임을 사용하려고직사각형 도형 이벤트 프로그래밍 방식

고마워

을 "지연", "방향"과 같은 텍스트 상자에 표시하거나된다
+0

당신이뿐만 아니라 양식 코드를 게시 할 수 그렇다면, 당신은 같은 일을 할 수 있을까? 생성 된 Car 인스턴스를 저장 한 다음 폼의 재정의 된 OnClick() 메서드에서 "클릭 한"것을 확인해야합니다. – Alan

+0

제목에 언어를 포함하지 마십시오. 그게 무슨 태그가 있습니다. –

답변

0

이벤트를 구현하는 시각적 인 파워 팩 Rectangle 셰이프 클래스를 사용하거나 아니면 Rectangle에 대한 사용자 컨트롤을 만들고 단순히 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); 
});