我想进行一个测验,遍历所有问题,同时请记住,在使用问题1时,其他的则被禁用。单击“下一步”按钮后,它应直接更改为Q2,禁用Q1,依此类推。
如何使它禁用上一个选项卡,并在单击“下一步”按钮后使当前选项卡保持启用状态?

小智 6
如前所述,可以通过索引选择选项卡。
和以前一样,让我们禁用所有其他选项卡:
foreach(TabPage tab in tabControl.TabPages)
{
tab.Enabled = false;
}
(tabControl.TabPages[0] as TabPage).Enabled = true;
Run Code Online (Sandbox Code Playgroud)
现在,防止导航到任何其他选项卡的方法很简单:
private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
{
if (!e.TabPage.Enabled)
{
e.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的缺点是它们看起来是可选的,这意味着它们不会变灰。如果您希望该外观也显示为不可用,则您必须自己执行此操作。
可以通过其索引访问选项卡,如下所示:
tabControl.TabPages[0]
Run Code Online (Sandbox Code Playgroud)
因此,假设您要开始使用选项卡1(索引= 0),则要禁用所有其他选项卡。
// This can be done manually in the designer as well.
foreach(TabPage tab in tabControl.TabPages)
{
tab.Enabled = false;
}
(tabControl.TabPages[0] as TabPage).Enabled = true;
Run Code Online (Sandbox Code Playgroud)
现在,当您按下“下一步”按钮时,您要禁用当前选项卡,启用下一个选项卡,然后转到下一个选项卡。但是请记住检查选项卡是否存在!
if(tabControl.TabCount - 1 == tabControl.SelectedIndex)
return; // No more tabs to show!
tabControl.SelectedTab.Enabled = false;
var nextTab = tabControl.TabPages[tabControl.SelectedIndex+1] as TabPage;
nextTab.Enabled = true;
tabControl.SelectedTab = nextTab;
Run Code Online (Sandbox Code Playgroud)
免责声明:这未经测试,但应该遵循这些原则。
您说您遇到有关对象的错误,该对象不包含Enabled的定义-我的代码将每个选项卡页面转换为一个TabPage。但是我还没有测试。
| 归档时间: |
|
| 查看次数: |
14953 次 |
| 最近记录: |