我有一个应用程序,根据用户的选择,只能选择某些选项卡。 如何在Windows窗体应用程序中清除那些不可选择的选项卡。
答案 0 :(得分:3)
要将它们变灰,我想你必须拥有 - 绘制标签。
不支持Enabled属性;你可以看到它的甚至没有包含在Intellisense中。您可以并且仍然应该设置它,但它只会绘制背景灰色,也不会绘制选项卡,也不会禁用任何控件或阻止用户选择选项卡。 (不确定这是否是一个如此优秀的UI设计..你可能想要设置至少一个工具提示来解释无法访问页面的原因。或者你让它被选中并禁用所有控件递归..或者你随便做; - )
要让它们无法选择,只需将其放入tabControl1_Selecting
事件:
if (!e.TabPage.Enabled) e.Cancel = true;
要将标签集DrawMode
设置为例如OwnerDrawFixed
将一些类似的绘画代码放入DrawItem
事件:
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
TabPage tp = tabControl1.TabPages[e.Index];
using (SolidBrush brush =
new SolidBrush(tp.Enabled ? tp.BackColor : SystemColors.ControlLight))
using (SolidBrush textBrush =
new SolidBrush(tp.Enabled ? tp.ForeColor : SystemColors.ControlDark))
{
e.Graphics.FillRectangle(brush, e.Bounds);
e.Graphics.DrawString(tp.Text, e.Font, textBrush, e.Bounds.X + 3, e.Bounds.Y + 4);
}
}
我决定也按照我认为应该的颜色绘制活动标签。如果您愿意,可以将第一个笔刷颜色更改为tabControl1.BackColor
。
我选择的系统颜色可能并不总是最好的,但我希望你能得到这个想法。