WPF에서 다른 창을 호출 할 때 다른 창의 탭 전환을 지정하고 싶습니다.

9951 단어 C#WPF

하고 싶은 일


  • 메인 윈도우
  • 서브 윈도우
  • 서브 윈도우는 탭 전환을 가지는

  • 메인 윈도우에서 서브 윈도우를 열 때 서브 윈도우의 어느 탭을 열지 지정하고 싶습니다.

    준비



    메인 윈도우와 서브 윈도우를 준비합니다.



    MainWindow.xaml
    <Window><!-- ここは省略 -->
        <Grid>
            <StackPanel Margin="20">
                <Button Name="BtnA" Margin="20">SubWindow タブ AAA を開く</Button>
                <Button Name="BtnB" Margin="20">SubWindow タブ BBB を開く</Button>
                <Button Name="BtnC" Margin="20">SubWindow タブ CCC を開く</Button>
            </StackPanel>
        </Grid>
    </Window>
    



    SubWindow.xaml
    <Window><!-- 省略 -->
        <Grid>
            <TabControl Margin="20">
                <TabItem Header="AAA" Name="AAA">
                    <StackPanel>
                        <TextBox Margin="50">タブAAAです</TextBox>
                    </StackPanel>
                </TabItem>
                <TabItem Header="BBB" Name="BBB">
                    <StackPanel>
                        <TextBox Margin="50">タブBBBです</TextBox>
                    </StackPanel>
                </TabItem>
                <TabItem Header="CCC" Name="CCC">
                    <StackPanel>
                        <TextBox Margin="50">タブCCCです</TextBox>
                    </StackPanel>
                </TabItem>
            </TabControl>
        </Grid>
    </Window>
    

    내용



    탭 전환용의 카운터 변수를 취급하는 클래스 TabChange 를 준비합니다

    TabChange.cs
    public class TabChange
        {
            public static int tabChange;
        }
    

    다음은 메인 윈도우의 처리. 버튼을 누르면 탭 전환용 카운터 변수 tabChange의 값이 바뀝니다.

    MainWindow.xaml.cs
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    
        private void BtnA_Click(object sender, RoutedEventArgs e)
        {
            TabChange.tabChange = 0;
            SubWindow sw = new SubWindow();
            sw.Show();
        }
    
        private void BtnB_Click(object sender, RoutedEventArgs e)
        {
            TabChange.tabChange = 1;
            SubWindow sw = new SubWindow();
            sw.Show();
        }
    
        private void BtnC_Click(object sender, RoutedEventArgs e)
        {
            TabChange.tabChange = 2;
            SubWindow sw = new SubWindow();
            sw.Show();
        }
    }
    

    다음은 서브 윈도우의 처리. 창이 생성되었을 때 tabChange의 값에 따라 탭을 선택합니다.

    SubWindow.xaml.cs
    /// <summary>
    /// SubWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class SubWindow : Window
    {
        public SubWindow()
        {
            InitializeComponent();
            if (TabChange.tabChange == 1)
            {
                BBB_select();
            }
            if (TabChange.tabChange == 2)
            {
                CCC_select();
            }
        }
        public void BBB_select()
        {
            //BBBタブを選択状態にする
            BBB.IsSelected = true;
        }
        public void CCC_select()
        {
            //CCCタブを選択状態にする
            CCC.IsSelected = true;
        }
    }
    

    후기



    "윈도우를 열고 탭을 선택한다"메소드를 내가 모르는 것만으로는 죄송합니다.
    아직 초보자이므로, 코드 자체의 쓰는 방법, qiita에의 문장의 쓰는 방법으로 이러면 더 읽기 쉬워지는, 좋아진다, 라고 하는 지적이 있으면 꼭 부탁드립니다.

    좋은 웹페이지 즐겨찾기