0

좋아요, 그래서 그림을 표시하는 PictureWindow라는 창이 있습니다 (나는 탭을 만드는 것과 관련없는 코드를 잘라 냈습니다). TabControl의 이름은 "itemsTab"입니다. 버튼 누르기를 사용하면 새 탭을 아무 문제없이 만들 수 있습니다. 그러나 호출 된 메소드 내에서 동일한 연산을 사용하면 작동하지 않습니다. buttonTab_Click 메서드를 사용하면 새 탭이 만들어지며 newTab 메서드는 그렇지 않습니다.

내가 볼 수있는 유일한 차이점은 보낸 사람 및 RoutedEventArgs 개체 때문입니다. 이러한 효과가 여기에 어떻게 영향을 줍니까? 아니면 제가 놓친 다른 것이 있습니까?

미리 감사드립니다.

편집하다새로운 것을 만들려면 newTab 메서드가 PictureWindow 생성자 메서드에서 호출 된 경우에만 새 탭을 만듭니다. 다음과 같은 경우 새 탭이 만들어집니다.

        
public PictureWindow(string current)
        {
            InitializeComponent();
            newTab(current);
        }

그러나 내가 다른 곳에서 그 메소드를 호출하면 작동하지 않는다.


public partial class PictureWindow : Window
    {
        public PictureWindow(string current)
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
        }

        private void buttonClose_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void buttonTab_Click(object sender, RoutedEventArgs e)
        {
            TabItem newTab = new TabItem();
            newTab.Header = "New Tab!";
            itemsTab.Items.Add(newTab);
        }

        public void newTab(string current)
        {
            TabItem newTab = new TabItem();
            itemsTab.Items.Add(newTab);

        }
    }


  • 중단 점을 넣고 newTab ()이 실제로 호출되는지 확인 했습니까? - Blachshma
  • 네, 있어요. 둘 다 올바르게 호출되고 동일한 데이터로 실행됩니다. 하지만 실제로는 새 탭을 만드는 사람이 하나뿐입니다. - Irish Yobbo
  • 다른 사람들이이 바보 같은 실수를하는 경우를 대비하여 문제에 대한 해결책을 게시하고 있습니다. 새 탭 항목이 만들어지고 추가되었지만 현재 창에는 추가되지 않았습니다.var newWindow = new PictureWindow(fileName); var window = newWindow.getCurrentPictureWindow(); window.newTab(fileName);getCurrentPictureWindow를 사용하여 오른쪽 창을 선택하면 탭이 성공적으로 추가되었습니다. - Irish Yobbo

관련된 질문

최근 질문