다른 유형의 하위 창을 열 수있는 MDI 응용 프로그램이 있습니다. 동일한 유형의 하위 창의 여러 (그러나 다른) 인스턴스를 열 수 있습니다. (예 : 자식 창 유형 A 인스턴스 3 개와 자식 창 유형 B 인스턴스 2 개를 열 수 있습니다. 사용자가 명시 적으로 여러 창으로 동일한 데이터를 끌지 않는 한 모든 5 개의 창은 서로 다른 엔터티이며 데이터를 공유하지 않습니다.) 각 자식 창 하나 이상의 ToolStrip이있는 ToolStripContainer가 있습니다.ToolStrip이 다른 ToolStripContainer에 도킹되지 않도록 방지하는 방법은 무엇입니까?
- 사용자가 ToolStrip을 A 유형의 자식 창에서 B 유형의 자식 창에있는 ToolStripContainer로 드래그하지 못하게하려면 어떻게해야합니까?
- 사용자가 자식 창 A의 한 인스턴스에서 같은 유형의 다른 인스턴스에있는 ToolStripContainer로 ToolStrip을 드래그하지 않았습니까?
사용자가 A 유형의 인스턴스 1에서 A 유형의 인스턴스 2로 ToolStrip을 드래그하지 못하도록하고, 인스턴스 2에서 물건을 선택한 다음 툴바에서 버튼을 클릭하여 무언가를 얻지 못하게하려고합니다. 이상한 일이 다른 창문에 일어난다. 마찬가지로 ToolStrip을 A 유형의 창에서 B 유형의 창으로 드래그하는 것은 의미가 없습니다. 작업은 해당 유형에 적용되지 않지만 사용자에게 모든 작업이 정상적으로 수행되는 것처럼 보이게합니다. 끌기.
ControlAdded 이벤트에 대한 자체 처리기를 추가하는 것만 큼 간단합니까? 아니면 더 좋은 방법이 있습니까? .NET 3.0에서 WinForms를 사용하고 있습니다.
편집 : 단계
- 는 새 Windows 응용 프로그램 프로젝트를 만듭니다.
- 새 사용자 컨트롤을 추가하십시오. 하나의 단추로 하나의 ToolStrip을 포함하는 ToolStripContainer를 컨트롤에 제공하십시오.
- 2 단계를 반복하여 UserControl2 클래스를 제공합니다.
- UserControl1과 UserControl2가 도구 상자에 나타나도록 솔루션을 컴파일하십시오.
- UserControl1 및 UserControl2를 폼으로 끌어옵니다. 경계선이 어디에 있는지 알 수 있도록 경계선을 설정하십시오.
- 앱을 실행합니다.
- 이 UserControl1에있는 컨테이너에서 ToolStrip에 드래그하고 UserControl2를의 용기 (UC1 제로 TOOLSTRIPS 및 UC2 두 TOOLSTRIPS를 떠나.)
- 지금 만 UserControl1에있는 코드에 액세스 할 수 상상에 놓으 지금 가능 . 사용자가 ToolStripContainer 인스턴스에서 ToolStrip을 드래그하지 못하게하려면 어떻게해야합니까?
나는 당신이 가지고있는 문제를 재현하려고 노력했지만 작동시키지 못하고있다. 같은 양식의 인스턴스 두 개를 만들면 도구 모음을 처음부터 다른 것으로 드래그 할 수 없습니다. –
repo 단계를 참조하십시오. 양식의 인스턴스가 두 개가 아닌 두 개의 개별 사용자 컨트롤이있는 폼의 인스턴스는 하나뿐입니다. –