如何使TabControl中的TabPage可见/隐藏和启用/禁用?
发布于 2012-10-15 20:02:03
您可能遗漏了显而易见的东西,因为以下两个操作都不会删除/更改选项卡的外观
tabPage1.Enabled = false; // this disables the controls on it
tabPage1.Visible = false; // this hides the controls on it.也不能从顶部的列表中删除选项卡。
发布于 2012-10-15 20:44:21
tabPage.Enabled似乎工作正常,但被标记为“不能使用”:
此应用编程接口支持.NET框架基础结构,不能直接在代码中使用。
此成员对此控件没有意义。
因此,您应该通过禁用选项卡中的每个控件来禁用选项卡页。例如,参见this。
存在一个现有的tabPage.Visible属性,但它似乎没有任何效果。此外,它还被标记为“不使用”,msdn建议从选项卡控件中删除选项卡页,以便将其隐藏:
//隐藏页签页tabControl.TabPages.Remove(tabPage1);//显示页签页(插入正确位置) tabControl.TabPages.Insert(0,tabPage1);
发布于 2013-11-07 09:09:03
我也有这个问题。tabPage.Visible没有像前面说的那样实现,这是一个很大的帮助(+1)。我发现你可以重写这个控件,这样就可以了。有点尸检,但我想把我的解决方案张贴在这里供其他人参考。
[System.ComponentModel.DesignerCategory("Code")]
public class MyTabPage : TabPage
{
private TabControl _parent;
private bool _isVisible;
private int _index = int.MinValue;
public new bool Visible
{
get { return _isVisible; }
set
{
if (_parent == null) _parent = this.Parent as TabControl;
if (_parent == null) return;
if (_index < 0) _index = _parent.TabPages.IndexOf(this);
if (value && !_parent.TabPages.Contains(this))
{
if (_index > 0 && _index < _parent.TabPages.Count) _parent.TabPages.Insert(_index, this);
else _parent.TabPages.Add(this);
}
else if (!value && _parent.TabPages.Contains(this)) _parent.TabPages.Remove(this);
_isVisible = value;
base.Visible = value;
}
}
protected override void InitLayout()
{
base.InitLayout();
_parent = Parent as TabControl;
}
}https://stackoverflow.com/questions/12895092
复制相似问题