設置: 我有一個名爲ProjectForm的System.Windows.Forms類。在這個表單中我有一個名爲tabControl的TabControl。當表單被初始化時,tabControl也是如此;但是,tabControl沒有加載TabPages。 TabPages在用戶選擇treeView控件中的項目時按需運行時創建和加載。TapePage圖像屬性沒有被繪製
示例呼叫從ProjectForm:
this.tabControl.TabPages.Add(PageLibrary.CallStackPage(e.Node.Name, e.Node.Text));
(TabPageLibrary)作爲PageLibrary類參考
class TabPageLibrary
{
private TabPageToolBar tabToolBar = new TabPageToolBar();
public TabPage CallStackPage(string name, string label)
{
TabPage tabPage = NewProjectPage();
tabPage.Name = "STACK:" + name;
tabPage.Text = label;
tabPage.Tag = name;
tabPage.ImageKey = "viewstack.png";
return tabPage;
}
private TabPage NewProjectPage()
{
TabPage tabPage = new TabPage();
tabPage.Padding = new Padding(3);
tabPage.UseVisualStyleBackColor = true;
tabPage.Controls.Add(this.tabToolBar);
return tabPage;
}
}
問題 當TabPage的被加載到運行時的控制 - 無圖像顯示在選項卡上。 TabControl.ImageList被設置爲包含我引用的圖像的ImageList。隨後,樹控件引用相同的ImageList,並在樹控件中顯示圖像。
我將不勝感激任何建議,解決方案或明顯的盲目閃光,你可以分享。
--Peace
+++修復更新++++
隨着DonBoitnott的洞見 - 我能得到這些圖像正確輕微重構渲染。
新調用示例從ProjectForm:
TabPage page = PageLibrary.NewProjectPage();
this.tabControl.TabPages.Add(page);
page = PageLibrary.CallStackPage(e.Node.Name, e.Node.Text, page);
重構(TabPageLibrary)作爲PageLibrary類再次引用
class TabPageLibrary
{
private TabPageToolBar tabToolBar = new TabPageToolBar();
internal TabPage CallStackPage(string name, string label, TabPage page)
{
page.Name = "STACK:" + name;
page.Text = label;
page.Tag = name;
page.ImageKey = "viewstack.png";
//TODO: Load Additional CallStack Controls
return page;
}
internal TabPage NewProjectPage()
{
TabPage tabPage = new TabPage();
tabPage.Padding = new Padding(3);
tabPage.UseVisualStyleBackColor = true;
tabPage.Controls.Add(this.tabToolBar);
return tabPage;
}
}
感謝@DonBoitnott,作品就像一個冠軍!
是分配給圖像列表標籤控件?即'tabControl1.ImageList = imageList1' – DonBoitnott 2014-10-16 19:47:45
是的 - 它被正確地分配。如果我使用VS添加一個靜態TabPage - 我可以從我已經分配的ImageList中選擇圖像。 – 2014-10-16 20:32:21