|
DockPanelのActiveなんたらChanged系のイベントで取れます。
ActiveContentChanged: コンテンツの切り替わり
ActiveDocumentChanged: ドキュメント(タブ表示しているもの)の切り替わり
ActivePaneChanged: ペイン(上下左右にドックしているもの)の切り替わり
なので今回はDocumentがよさそうですね。
アクティブになったタブのインスタンスは
イベントハンドラ内で、ActiveContentなどから取得出来ますが、
こいつは結構nullを返すのでその辺の処理はしっかり行ってください。
public partial class Form1 : Form
{
DockPanel dockPanel;
DockContent c1;
DockContent c2;
DockContent c3;
public Form1()
{
InitializeComponent();
this.dockPanel = new DockPanel();
this.dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.dockPanel.DocumentStyle = DocumentStyle.DockingWindow;
this.Controls.Add(this.dockPanel);
c1 = new DockContent();
c2 = new DockContent();
c3 = new DockContent();
c1.Text = "Content1";
c2.Text = "Content2";
c3.Text = "Content3";
c1.Show(this.dockPanel, DockState.Document);
c2.Show(this.dockPanel, DockState.Document);
c3.Show(this.dockPanel, DockState.Document);
dockPanel.ActiveContentChanged += DockPanel_ActiveContentChanged;
}
private void DockPanel_ActiveContentChanged(object sender, EventArgs e)
{
Console.WriteLine("Active: " + this.dockPanel.ActiveContent?.ToString());
}
}
|