gtk#에서 방금 클릭한 탭의 페이지 번호를 어떻게 확인하나요?

StackOverflow https://stackoverflow.com/questions/93044

  •  01-07-2019
  •  | 
  •  

문제

여러 탭이 있는 GTK 노트북이 있습니다.각 탭 레이블은 무엇보다도 탭을 닫는 데 사용하려는 버튼을 포함하는 복합 컨테이너입니다.버튼에는 "클릭" 신호에 대한 핸들러가 있습니다.

신호가 호출되면 버튼 위젯과 "EventArgs"를 매개변수로 받습니다.

버튼 위젯을 기반으로 페이지 번호를 결정해야 하지만 myNotebook.PageNum(buttonWidget)은 항상 -1을 반환합니다.나는 위젯을 포함하는 HBox인 ButtonWidget.Parent도 사용해 보았습니다.

내가 무엇을 할 수 있는지, 내가 뭘 잘못하고 있는지에 대한 아이디어가 있나요?

도움이 되었습니까?

해결책

한 가지 쉬운 해결 방법은 버튼을 구성할 때 페이지 번호를 버튼의 Clicked 이벤트에 전달하는 것입니다.

for (int page = 0; page < n; page++){ 
    int the_page = page;
    NotebookPage p = new NotebookPage ();
    ...
    Button b = new Button ("Close page {0}", the_page);
    b.Clicked += delegate { 
        Console.WriteLine ("Page={0}", the_page); 
    };
}

"the_page"는 대리자가 캡처할 새 변수이므로 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top