Céd*_*tte 85
将TabPage转换为Control,然后将Enabled属性设置为false.
((Control)this.tabPage).Enabled = false;
Run Code Online (Sandbox Code Playgroud)
因此,tabpage的标题仍将启用,但其内容将被禁用.
Han*_*ant 69
在TabPage的类隐藏Enabled属性.这是故意的,因为它有一个尴尬的UI设计问题.基本问题是禁用页面也不会禁用选项卡.如果尝试通过使用Selecting事件禁用选项卡来解决这个问题,那么当TabControl只有一个页面时它就不起作用.
如果这些可用性问题与您无关,那么请记住该属性仍然有效,它只是隐藏在IntelliSense之外.如果FUD不舒服,那么你可以简单地这样做:
public static void EnableTab(TabPage page, bool enable) {
foreach (Control ctl in page.Controls) ctl.Enabled = enable;
}
Run Code Online (Sandbox Code Playgroud)
小智 63
你可以简单地使用:
tabPage.Enabled = false;
Run Code Online (Sandbox Code Playgroud)
此属性未显示,但它没有任何问题.
您可以对选择事件进行编程TabControler
,使其无法更改为不可编辑的选项卡:
private void tabControler_Selecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPageIndex < 0) return;
e.Cancel = !e.TabPage.Enabled;
}
Run Code Online (Sandbox Code Playgroud)
Sto*_*net 43
您可以注册"选择"事件并取消导航到标签页:
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPage == tabPage2)
e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)
另一个想法是将所有控件放在Panel控件的tabpage上并禁用面板!斯迈利
您还可以从tabControl1.TabPages集合中删除tabpage.这会隐藏标签页.
Ste*_*art 13
据推测,您希望在选项卡控件中看到选项卡,但您希望它被"禁用"(即灰色且不可选).没有内置支持,但您可以覆盖绘图机制以提供所需的效果.
这里提供了如何执行此操作的示例.
神奇的是来自呈现源的片段,以及DisableTab_DrawItem方法:
this.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
this.tabControl1.DrawItem += new DrawItemEventHandler( DisableTab_DrawItem );
Run Code Online (Sandbox Code Playgroud)
rfm*_*tor 12
在禁用以下内容后,根据CédricGuillemette的答案进行扩展Control
:
((Control)this.tabPage).Enabled = false;
Run Code Online (Sandbox Code Playgroud)
...你便可以处理TabControl
的Selecting
事件为:
private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = !((Control)e.TabPage).Enabled;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
这将删除标签页,但您需要在需要时重新添加标签页:
tabControl1.Controls.Remove(tabPage2);
Run Code Online (Sandbox Code Playgroud)
如果以后需要它,您可能希望在删除之前将其存储在临时标签页中,然后在需要时重新添加它.