如何突出显示/灰显Tabcontrol Tabpage

时间:2014-08-27 14:03:49

标签: c# .net winforms

我有一个应用程序,根据用户的选择,只能选择某些选项卡。 如何在Windows窗体应用程序中清除那些不可选择的选项卡。

1 个答案:

答案 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。 我选择的系统颜色可能并不总是最好的,但我希望你能得到这个想法。