以某种方式可以禁用选项卡控件的一个(或多个)选项卡吗?在某些时候我需要让用户留在活动选项卡上并阻止他离开...我知道我可以禁用整个TabControl组件,但是这也会禁用活动选项卡上的所有组件......
我也尝试使用TabControl的选择方法:
private void TabControl_Selecting(object sender, TabControlCancelEventArgs e) {
e.Cancel = PreventTabSwitch;
}
这样可以阻止用户切换(如果PreventTabSwitch == true),但由于所有标签看起来都很活跃而且没有反应就让人感到困惑......
单个标签页没有Enabled属性,所以我不知道还能做什么......
提前感谢所有提示。
答案 0 :(得分:1)
我认为你阻止他们离开,因为表单上的验证失败了?使用ErrorProvider组件将提供某种视觉提示,他们需要在切换标签之前执行某些操作。
答案 1 :(得分:0)
我曾经有类似的需求(我希望活动标签有不同的背景颜色和其他一些东西)并最终创建继承自TabControl
&的新控件。 TabPage
我使用OwnerDraw
来改变外观。
根据MSDN,你正在做的是正确的方法,但它确实建议另一个选择是根据需要隐藏/显示页面。
答案 2 :(得分:0)
TabControl - 禁用/启用标签页 http://social.msdn.microsoft.com/forums/en-US/winforms/thread/985b41c3-a1de-4744-8875-63262d4c2718/
MSDN在http://social.msdn.microsoft.com/Search/en-US?query=tabcontrol+disabled+tabpage&ac=8
答案 3 :(得分:0)
用户无法单击选项卡进行导航,但他们可以使用两个按钮(下一步,后退)。如果不满足//条件,则用户无法继续下一个
private int currentTab = 0;
private void frmOneTimeEntry_Load(object sender, EventArgs e)
{
tabMenu.Selecting += new TabControlCancelEventHandler(tabMenu_Selecting);
}
private void tabMenu_Selecting(object sender, TabControlCancelEventArgs e)
{
tabMenu.SelectTab(currentTab);
}
private void btnNextStep_Click(object sender, EventArgs e)
{
switch(tabMenu.SelectedIndex)
{
case 0:
//if conditions met GoTo
case 2:
//if conditions met GoTo
case n:
//if conditions met GoTo
{
CanLeaveTab:
currentTab++;
tabMenu.SelectTab(tabMenu.SelectedIndex + 1);
if (tabMenu.SelectedIndex == 3)
btnNextStep.Enabled = false;
if (btnBackStep.Enabled == false)
btnBackStep.Enabled = true;
CannotLeaveTab:
;
}
private void btnBackStep_Click(object sender, EventArgs e)
{
currentTab--;
tabMenu.SelectTab(tabMenu.SelectedIndex - 1);
if (tabMenu.SelectedIndex == 0)
btnBackStep.Enabled = false;
if (btnNextStep.Enabled == false)
btnNextStep.Enabled = true;
}
答案 4 :(得分:0)
如果要取消选项卡的更改,可以使用取消选择事件。在那里,您可以通过将提供的TabControlCancelEventArgs的属性取消设置为true来取消更改。