2012-08-09 4 views
0

이 항목을 검색했습니다. 몇 가지 대답이 있지만 어떻게해야하는지 알 수 없습니다.C# 사용자 지정 컨트롤에 대한 사용자 지정 이벤트 WinForm

텍스트 상자 및 목록보기가있는 사용자 지정 컨트롤이 있습니다. 사용자가 텍스트 상자에 입력을 시작하면 listview는 입력 된 텍스트와 가능한 모든 일치 항목으로 채워집니다 (사용자를위한 검색 상자). 사용자 이름을 입력하면 고객을 찾을 수 있습니다.

내가 원하는 것은 사용자가 고객을 입력하고 고객이 선택되면 사용자 정의 컨트롤의 텍스트 상자에서 주 프로젝트로 고객 이름을 전달해야한다는 것입니다.

이렇게하려면 사용자 지정 이벤트가 필요합니다. 고객이 선택되면 주 응용 프로그램에 알리는 이벤트가 발생합니다.

미리 감사드립니다. 어떻게해야합니까?

답변

1

세 가지 작업을 수행해야합니다.

1. 사용자 정의 컨트롤에서 이벤트를 정의하십시오 (지금은 특별한 이벤트 인수가 추가되지 않았습니다).

public event EventHandler CustomerSelected { get; set; } 
private void OnCustomerSelected() { 
    var customerSelected = CustomerSelected; 
    if (customerSelected != null) { 
     customerSelected(this, EventArgs.Empty); 
    } 
} 

2. 필요한 경우 이벤트를 실행하십시오. 고객 선택시 OnCustomerSelected 메서드를 호출하여 사용자 지정 컨트롤에서이 작업을 수행 할 수 있습니다.

3. 기본 양식으로 이벤트를 처리하십시오. 이런 식으로 할 수 있습니다 (나는 람다를 사용했습니다. 원하는대로 이벤트 핸들러 메서드를 정의 할 수도 있습니다).

this.customerControl1.CustomerSelected += (s,e) => { 
    // This runs when a customer is selected. 
}; 
+0

'OnCustomerSelected'가 'protected virtual'이 아니어야합니까? (단지 모범 사례) –

+0

다른 경우가있을 때까지 나는 보통 비공개로 둡니다. – Maarten

+0

자신/팀 전용으로 개발하고 항상 코드를 라이브 개발 환경으로 만들면 True입니다. –

관련 문제