UserControl을 Visual Studio 도구 상자에 넣는 방법


93

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

답변:


116

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

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

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

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


32
여기에서 저에게 핵심 단어는 "재 구축"이었습니다 ... 시도하지 않았습니다.도! 그것만으로도 이것을 분류했습니다.
Danny Beckett

2
그리고, 나는 다시 후 다시 열 솔루션에 있었다
짐 Lahman

1
VS2012에서 그들은 이제 옵션 대화 상자에 '이 효과를 적용하려면 현재 솔루션을 다시 열어야합니다'라는 힌트를 추가했습니다.
Carlos P

2
@AnatoliiGumennyi UserControl현재 프로젝트 밖에있는 경우 @Arseny의 지시를 따라야 합니다.
공격성

2
참고 : VS2013 에서처럼 도구 상자> AutoToolboxPopulate 설정은 이제 새로 설치할 때 True로 기본 설정됩니다.
Curmudgeon 2015-06-18

36

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

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


17
'이전 등록'에 대해 설명해 주시겠습니까? 나는 그것이 필요하다고 생각하지 않는다.
Henk Holterman

25

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


8
또한 vs2012에서.
colbybhearn

8
또한 vs2013에서.
Connor McGuinness

6
또한 vs2015에서?
serdar

5
예 vs2015
JRB

5
목록에 vs2017 추가
라이언

14

VS 2010 사용 :

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

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

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

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


1
도구 상자에서 .exe를 가져 오는 경우 다른 프로젝트에서도 사용할 수 있습니다.
Sebastian

1
"또는 디자이너가 심장 마비를 앓고 있습니다"가 포함 된 모든 답변이 내 투표를받습니다!
Joel

나는 똑같은 일을했고 모두 좋지만 코드를 다른 프로젝트로 옮기고 dll을 만들고 dll 파일을 참조하면 사용자 지정 컨트롤이 표시되지 않습니다.
Fandi Susanto 2014

6

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

해결책:

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

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

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


3

몇 가지 방법이 있습니다.

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

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

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


이것이 더 나은 접근 방식 인 것 같습니다. 유일한 단점은 컨트롤을 시각적으로 편집 할 수 없다는 것입니다 (또는 적어도 방법을 찾지 못했습니다).
Sebastian

신경 쓰지 마세요. 템플릿을 요소로 추가했고 디자이너가 보여줍니다.
Sebastian

UserControl이 포함 된 프로젝트가 동일한 솔루션에있는 경우에는 전적으로 동의하며 DLL에 연결하지 않는 것이 좋습니다. 그리고 DLL과 함께 작동합니다. 즉, 라이브러리 프로젝트의 UserControl은 라이브러리를 참조하는 모든 WinForms 프로젝트에 표시됩니다 (물론 재 빌드 후 ;-)).
Xan-Kun Clark-Davis

2

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

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


1

기본 컨트롤에서 제네릭을 사용하는 경우 기본 질문. 경우 예:

제어권이 있다고 가정 해 보겠습니다.

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown은 디자이너를 열 수 없으며 도구 상자에 표시되지 않습니다. 왜? 기본 컨트롤이 아직 컴파일되지 않았기 때문에-MyComboDropDown이 컴파일 될 때. 다음과 같이 수정할 수 있습니다.

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

다시 빌드하고 도구 상자를 재설정 한 후 디자이너와 도구 상자에서 MyComboDropDown을 볼 수 있어야합니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.