【发布时间】:2014-12-12 06:32:40
【问题描述】:
设置: 我有一个名为 ProjectForm 的 System.Windows.Forms 类。在这种形式中,我有一个名为 tabControl 的 TabControl。当表单被初始化时,tabControl 也是如此;但是,tabControl 没有加载任何 TabPages。当用户在 treeView 控件中选择项目时,TabPages 会在运行时按需创建和加载。
来自 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,并且图像确实显示在树控件中。
如果您能分享任何建议、解决方案或令人眼花缭乱的闪现,我将不胜感激。
--和平
+++ 修复更新++++
凭借 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,像冠军一样工作!
【问题讨论】:
-
图片列表是否分配给了tab控件?即
tabControl1.ImageList = imageList1 -
是的 - 它已正确分配。如果我使用 VS 添加静态 TabPage - 我可以从我分配的这个 ImageList 中选择图像。
标签: c# winforms tabcontrol tabpage