2017-07-03 6 views
0

私は複数のタブがあるTabControlを持っています。私は、 'タブをドラッグするか'タブを右クリックすると、そのタブがタブリストから出てきて、フリーフロートウィンドウ(またはwinform)になる機能を持つ必要があります。画面。およびその逆。ここで TabControlのTabPageをフローティングする方法はありますか?

は、タブページがフォームにコントロールし、その逆swapingのためのコードの下に使用してくださいTabControl-

TabControl tabControl = new TabControl(); 
TabPage tabPage1 = new TabPage();  
tabPage1.Text = "Tab Page 1"; 
TabPage tabPage2 = new TabPage(); 
tabPage2.Text = "Tab Page 2"; 
tabControl.Controls(tabPage1); 
tabControl.Controls(tabPage2); 
+0

直接できないことに注意してください。 TabPagesの代わりにUserControlsをデザインし、Tabコントロールに追加します。その後、ページから削除したり、ページを削除したり、ページを追加してフローティングさせることができます。フォームに、別のフォームまたは何でも.. - あなたが今Designerを使用できるように、あらゆる種類のパネルを使用するよりもずっと優れています。ファンクショナリティにアクセスするには、適切なプロパティを作成する必要があることに注意してください。ちょっと退屈なのは良いことです。 – TaW

答えて

0

ためのコードです。タブページにコントロールを追加するのではなく、パネルにコントロールを追加してから、そのパネルをTab_Pageに追加する必要があります。

private void Button1_Click(object sender, EventArgs e) 
    { 

     TabPage tabPage1 = (TabPage) sender; 

     Form frm = new Form(); 
     frm.Text = tabPage1.Text; 

     Panel panel = (Panel) tabPage1.Controls[0]; 
     tabPage1.Controls.RemoveAt(0); 
     tabControl.TabPages.Remove(tabPage1); 

     frm.Controls.Add(panel); 
     frm.Show(); 

    } 

    private void Form1_Click(object sender, EventArgs e) 
    { 

     Form frm = (Form) sender; 
     TabPage tabPage1 = new TabPage(); 

     tabPage1.Text = frm.Text; 

     Panel panel = (Panel)frm.Controls[0]; 
     frm.Controls.RemoveAt(0); 
     tabControl.TabPages.Add(tabPage1); 

     frm.Controls.RemoveAt(0); 
     frm.Hide(); 

    } 
関連する問題