[c#] UserControl을 Visual Studio 도구 상자에 넣는 방법

내 프로젝트에서 사용자 컨트롤을 만들고 프로젝트를 빌드 한 후 도구 상자에 넣고 공통 컨트롤로 사용해야합니다. 하지만 난 못해. 는 UserControl내 프로젝트 네임 스페이스에, 나는 시도 Choose Item마우스 오른쪽 버튼으로 클릭 메뉴에서,하지만 난 그것을 추가 할 수있는 방법을 찾지 못했습니다.



답변

나는 당신이 VS2010을 사용하고 있다고 가정하고 있습니다. 실제로 도구 상자 자동 채우기를 중지하는 옵션이 있습니다!

도구> 옵션> Windows Forms 디자이너> 일반으로 이동합니다.

목록 맨 아래에 Toolbox> AutoToolboxPopulate가 있으며 새로 설치하면 기본값이 False로 설정됩니다. true로 설정 한 다음 솔루션을 다시 빌드하십시오.

솔루션의 사용자 컨트롤은 도구 상자에 자동으로 추가되어야합니다. 솔루션을 다시로드해야 할 수도 있습니다.


답변

도구 모음에서 마우스 오른쪽 버튼을 클릭 한 다음 상황에 맞는 메뉴에서 “항목 선택”을 클릭합니다. 등록 된 구성 요소가있는 대화 상자가 나타납니다. 이 대화 상자에서 “찾아보기”를 클릭하여 사용할 사용자 컨트롤이있는 어셈블리를 선택합니다.

추신. 이 어셈블리는 이전에 등록해야합니다.


답변

사용자 정의 컨트롤에 매개 변수가없는 생성자가 있어야하며 그렇지 않으면 목록에 표시되지 않습니다. 적어도 그것은 vs2005에서 사실이었습니다.


답변

VS 2010 사용 :

Windows.Forms 프로젝트가 있다고 가정 해 보겠습니다. 프로젝트에 UserControl (예 : MyControl)을 추가하고 모두 디자인합니다. 이제 도구 상자에 추가하려고합니다.

프로젝트가 성공적으로 빌드되면 프레임 워크 구성 요소에 나타납니다. 도구 상자를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 표시하고 “항목 선택 …”을 선택한 다음 “.NET Framework 구성 요소”탭에서 컨트롤 이름 (MyControl)을 찾습니다.

dll 사용에 비해 장점 : 양식과 동일한 프로젝트에서 컨트롤을 편집 할 수 있으며 양식은 새 컨트롤로 빌드됩니다. 그러나 제어는이 프로젝트에서만 가능합니다.

참고 : 컨트롤에 빌드 오류가있는 경우 포함 된 양식으로 이동하기 전에 오류를 해결하십시오. 그렇지 않으면 디자이너가 심장 마비를 겪고 있습니다.


답변

많은 사용자 컨트롤이 있었지만 솔루션을 다시 빌드하고 항목 선택 … 대화 상자 에서 확인 했지만 하나는 도구 상자 에 표시하지 않았습니다 .

해결책:

  1. 에서 솔루션 탐색기 I 마우스 오른쪽 버튼으로 클릭 잘못된 사용자 제어 파일을 선택한 프로젝트에서 제외
  2. 솔루션 재 구축
  3. 사용자 정의 컨트롤을 마우스 오른쪽 단추로 클릭하고 프로젝트에 포함을 선택 합니다 ( 솔루션 탐색기 에서 모든 파일 표시가 활성화되어 있다고 가정 ).

참고 이 또한 당신이 필요로 AutoToolboxPopulate의 옵션을 사용. @DaveF 답변에서 알 수 있듯이.

대체 솔루션 : 이것이 작동하는지 확실하지 않고 이미 내 문제를 해결했기 때문에 시도 할 수 없었지만 항목 선택 … 대화 상자 에서 사용자 컨트롤을 선택 취소 한 경우 확인을 누른 다음 다시 열었습니다. 사용자 컨트롤을 확인했습니다. 그것도 작동 할 수 있습니다.


답변

몇 가지 방법이 있습니다.

  1. 원래 프로젝트에서 File | Export template를
    선택한 다음 ItemTemplate을 선택하고 마법사를 따릅니다.

  2. UserControl을 별도의 ClassLibrary로 이동합니다 (및 네임 스페이스 수정 등).
    필요한 프로젝트에서 클래스 라이브러리에 참조를 추가하십시오. GAC 또는 DLL 파일 만 신경 쓰지 마십시오.

UserControl을 일반 도구 상자에 넣는 것은 권장하지 않지만 수행 할 수 있습니다. @Arseny의 답변보기


답변

제 경우에는 프로젝트의 컨트롤을 볼 수 없었습니다. 도구 상자를 마우스 오른쪽 버튼으로 클릭하고 “모두 표시”를 선택했을 때만 볼 수 있지만 비활성화되었습니다.

프로젝트 유형을 Windows 응용 프로그램에서 ClassLibrary로 변경하면 수정되었습니다.