#やりたいこと
- メインウィンドウ
- サブウィンドウ
- サブウィンドウはタブ切り替えを持つ
メインウィンドウからサブウィンドウを開くとき、サブウィンドウのどのタブを開くのか指定したい
#準備
メインウィンドウとサブウィンドウを用意します。
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への文の書き方でこうしたらもっと読みやすくなる、良くなる、というご指摘がありましたら是非お願い致します。