0
사용자 정의 GTK 창이 있습니다. 나는 단순히 DeleteEvent 이벤트에 이벤트 핸들러를 추가하여 MonoDevelop 또는 "직접"을 사용하여 DeleteEvent에 연결하려고합니다.GTK 창 DeleteEvent가 실행되지 않음
그러나 오른쪽 위 모서리에있는 "X"버튼 (닫기 버튼)을 클릭하면 이벤트가 실행되지 않습니다.
왜? 이것은 나에게 의미가 없습니다.
사용자 정의 GTK 창이 있습니다. 나는 단순히 DeleteEvent 이벤트에 이벤트 핸들러를 추가하여 MonoDevelop 또는 "직접"을 사용하여 DeleteEvent에 연결하려고합니다.GTK 창 DeleteEvent가 실행되지 않음
그러나 오른쪽 위 모서리에있는 "X"버튼 (닫기 버튼)을 클릭하면 이벤트가 실행되지 않습니다.
왜? 이것은 나에게 의미가 없습니다.
밝혀졌습니다. 이벤트가 발생하기 전에 창 인스턴스가 삭제되었습니다.
나는 한마디로 GTK를 설명해야한다면, 그것은 것 "모호한".
개인적으로 이벤트가 처리 된 개체에 대해 해고 될 경우 예외가 발생한다고 예상됩니다. 마찬가지로, 처분 될 때 창을 숨기거나 파괴 할 것으로 기대합니다. 이들 중 어느 것도 그렇지 않습니다.
학습 교재.
GTK #은 GTK +를 둘러싼 .NET 래퍼이며, GTK +는 계산 된 참조로 객체를 유지한다는 것을 명심하십시오. 그래서 관리 객체를 처리 할 때 참조 카운트가 삭제되고 (신호는 연결이 끊어집니다!), 참조 자체가 0에 도달 할 때까지 창 자체가 파괴되지 않습니다. 화면에서 실현되기 때문에 0에 도달하지 않으며 창 관리자는 하나의 참조를 보유합니다. 이것은 파일과 같습니다. 파일 시스템의 파일은'System.IO.File' 객체를 삭제하면 사라지지 않습니다. 'Delete'를 호출해야합니다. 마찬가지로 창은'파괴 '라고 부를 때까지 주변에있을 것입니다. – rodrigo
물론, 여러분이 말했듯이, 그것은 GTK +를 둘러싼 .NET 래퍼입니다. 해당 래퍼에 포함 된. NET 표준 오류 처리 싶습니다. 그렇지 않으면, 나뿐만 아니라 내 자신의 래퍼를 쓸 수도 있습니다. 처분 될 때 창문이 어떻게 스스로 파괴되지 않습니까? 어떤 경우에 처분되는 동안 창을 보이기를 원하십니까? –
@ChristopherHarris, Dispose는 Destroy와 같지 않습니다. 그것은 파일 핸들을 갖는 것과 같습니다. 여기에는 창 핸들이 있습니다. – IanNorton