1

외부 응용 프로그램에서 사용하는 사용자 지정 컨트롤이 있습니다. 응용 프로그램에서 임의 버튼의 클릭 이벤트를 바인딩하여 컨트롤에 데이터를 추가하고 싶습니다.사용자 지정 컨트롤을 외부 단추에 바인딩

가능한가요? 기본적으로 개발자가 디자인 타임에 버튼 컨트롤을 추가 할 수있게하는 컨트롤을 속성으로 만드는 것이 생각났습니다. 그런 다음 응용 프로그램이 실행되면 버튼에 등록 된 모든 클릭이 사용자 정의 컨트롤의 메소드로 전달되어 데이터를 추가합니다.

이 것이 가능합니까? 그렇다면 정확히 수행해야 할 작업을 설명 할 수 있습니까?

답변

1

사용자 지정 컨트롤에 Button 유형의 속성을 만들 수 있습니다. 그런 다음 디자이너에 사용자 지정 컨트롤의 인스턴스를 추가하면 해당 속성에 대한 폼 중 하나를 선택할 수있는 Button 인스턴스를 모두 표시하는 드롭 다운이 나타납니다. 그것은 재산의 세터의 버튼의 이벤트를 클릭하는 방법을 추가 할 충분 :

using System; 
using System.Windows.Forms; 
public class MyControl : UserControl 
{ 
    private Button addButton; 
    public Button AddButton 
    { 
     get { return addButton; } 
     set 
     { 
      if (addButton != null) 
       addButton.Click -= new EventHandler(addButton_Click); 

      addButton = value; 

      if (addButton != null) 
       addButton.Click += new EventHandler(addButton_Click); 
     } 
    } 

    void addButton_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Add Button Clicked!"); 
    } 
} 

당신이 AddButton 속성, 디자이너에 넣어 때 폼의 목록 O를 사용 가능한 버튼이 표시됩니다. 그 중 하나를 선택하면 충분합니다. 그런 다음 원하는 동작 (이 예에서는 메시지 상자 표시)이 해당 버튼의 클릭 이벤트에 연결됩니다.

enter image description here

+0

을 테스트하려면, 그것은 복사 ANS 프로젝트에 파일에 코드를 붙여 넣은 다음 솔루션을 구축하고 폼에 MyControl''의 인스턴스를 넣어 년'AddButton'을하게 proprty을 볼 충분 디자이너. 그런 다음 버튼 중 하나를 선택하고 프로그램을 실행하고 해당 버튼을 클릭하십시오. –

+0

감사합니다. – Acidburn73

+0

여러분의 질문에 대한 답변에 국한되지 않습니다. 모든 질문에서 좋은 대답에 투표 할 수 있습니다. 또한 귀하의 질문에 하나의 대답 만 수락 할 수 있지만 허용 된 답변을 포함한 모든 좋은 답변에 투표 할 수 있습니다. - 댓글을 깨끗하게 유지하기 위해 본 후에 댓글을 삭제하겠습니다. –