C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

dockpanelsuiteのタブ選択について /sakamoto (18/10/02(Tue) 19:11) #88818
Re[1]: dockpanelsuiteのタブ選択について /ぼーちゃん (18/10/03(Wed) 09:38) #88822
  └ Re[2]: dockpanelsuiteのタブ選択について /sakamoto (18/10/03(Wed) 13:41) #88826 解決済み


親記事 / ▼[ 88822 ]
■88818 / 親階層)  dockpanelsuiteのタブ選択について
□投稿者/ sakamoto (1回)-(2018/10/02(Tue) 19:11:52)

分類:[C#] 

2018/10/02(Tue) 19:13:12 編集(投稿者)
2018/10/02(Tue) 19:12:44 編集(投稿者)
2018/10/02(Tue) 19:12:34 編集(投稿者)

DockPanelSuiteについての質問です。

dockpanelに複数のパネルを追加するとタブで切り替えることができるのですが、
そのタブを切り替える際のタブをクリックした際のイベントを取得する方法が知りたいです。

どなたか知っていたら教えていただきたく・・・宜しくお願いいたします。


[ □ Tree ] 返信 編集キー/

▲[ 88818 ] / ▼[ 88826 ]
■88822 / 1階層)  Re[1]: dockpanelsuiteのタブ選択について
□投稿者/ ぼーちゃん (3回)-(2018/10/03(Wed) 09:38:57)
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());
        }
    }

[ 親 88818 / □ Tree ] 返信 編集キー/

▲[ 88822 ] / 返信無し
■88826 / 2階層)  Re[2]: dockpanelsuiteのタブ選択について
□投稿者/ sakamoto (2回)-(2018/10/03(Wed) 13:41:28)
No88822 (ぼーちゃん さん) に返信
> 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());
> }
> }

ありがとうございます!
途方にくれてたので助かりました!!!

解決しました!
解決済み
[ 親 88818 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -