題主是不是用的 TabControl1.Controls.Add(TabPage1) 或者 TabControl1.TabPages.Add(TabPage1) 這種方法添加的?
創(chuàng)新互聯(lián)建站長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為馬尾企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),馬尾網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
這樣的話不但添加的第二個頁面是空白的,第一個頁面也會變成空白,因?yàn)閷ο到y(tǒng)來說,存在了兩個 TabPage1,而原先 TabPage1 里的控件用的是 Me.TabPage1.Controls.Add(Label1) 之類的方法添加進(jìn)去的,有兩個 TabPage1 系統(tǒng)就糊涂了不知道是該往哪一個里面加,所以就出現(xiàn)了兩個都是空白的。
可以用的變通的方法實(shí)現(xiàn)。
比如:
用一個 Panel 承裝 TabPage1 里的所有控件,在選中 TabPage2 時,執(zhí)行
TabPage1.Controls.Remove(Panel1)
TabPage2.Controls.Add(Panel1)
先移除再添加,這樣就不會出錯了。
再比如:
最初設(shè)計(jì) TabPage1 的時候就不要先添加進(jìn)去,而是作為一個基類,有點(diǎn)兒說不明白,看代碼吧:
Dim s As String = "123124" vbTab "213131" vbTab "123123" vbTab "131312"
Dim arr As String() = s.Split(vbTab) '放入arr數(shù)組
For i As Integer = 0 To UBound(arr)
Console.WriteLine(arr(i))
Next
VB.net中點(diǎn)擊標(biāo)簽頁面觸發(fā)的Selected事件,代碼如下。
Private Sub TabControl_Selected(sender As Object, e As TabControlEventArgs) Handles TabControl.Selected
If e.TabPage.TabIndex = TabPage1.TabIndex Then
MsgBox("你點(diǎn)擊了第一個標(biāo)簽控件")
End If
End Sub
在C#Form1的左邊加一個treeview控件。
在其中填入節(jié)點(diǎn)1和節(jié)點(diǎn)2.他們的Text分別叫:主機(jī)1、主機(jī)2.然后再在Form1的右邊拉一個tabcontrol控件。
他的里邊當(dāng)然自動生成tabpage1和tabpage2.再填一個空的tabpage3.
要求:當(dāng)執(zhí)行的時候,顯示空的tabpage3。
點(diǎn)主機(jī)1,tabpage1顯示,tabpage2隱藏。點(diǎn)主機(jī)2,tabpage2顯示,tabpage1隱藏。
以下使用NodeMouseClick事件,相應(yīng)鼠標(biāo)左鍵點(diǎn)擊2個節(jié)點(diǎn),設(shè)置Tag屬性(當(dāng)然判斷text屬性也可以,但是不建議)
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (e.Node.Tag.ToString() == "1")
{
tabPage2.Parent = null;
tabPage1.Parent = this.tabControl1;
}
if (e.Node.Tag.ToString() == "2")
{
tabPage1.Parent = null;
tabPage2.Parent = this.tabControl1;
}
}
}