我有一个应用程序,只能根据用户做出的选择来选择某些选项卡。如何在Windows窗体应用程序上将那些无法选择的选项卡显示为灰色。
为了使它们变灰,我想您必须自己绘制选项卡。
不能很好地支持Enabled属性。您可以看到它甚至没有包含在Intellisense中。您可以并且仍然应该设置它,但是它只会绘制背景灰色,也不会绘制选项卡,也不会禁用任何控件或阻止用户选择选项卡。(不确定是否无论如何都是这样的UI设计。您可能希望至少设置一个ToolTip来解释为什么无法访问该页面。或者您可以选择它并递归禁用其上的所有控件。。或者做你想做的;-)
要使它们不可选择,只需将其放入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);
}
}
我决定也按照我认为应该用页面的颜色来绘制活动的Tab。您可以根据需要将第一种笔刷颜色更改tabControl1.BackColor
为。我选择的Systemcolors不一定总是最好的,但我希望您能明白。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句