0

我希望这里有人可以帮助我,我的 Windows 窗体应用程序上有一个 Tabless 控件,基本上因为这些选项卡是故意隐藏的,所以我在每个选项卡“下一步”和“返回”中添加了 2 个按钮。

这是我的“下一步”按钮的代码片段:

private void nextbutton1_Click(object sender, EventArgs e)
{
    tabControl1.SelectedTab = tabPage3;
    this.toolStripStatusLabel8.Text = System.DateTime.Now.ToString();
}

效果很好,但是当我在“返回”按钮上使用完全相同的理论时,它不起作用:

private void backbutton1_Click(object sender, EventArgs e)
{
    tabControl1.SelectedTab = tabmain;
    this.toolStripStatusLabel1.Text = System.DateTime.Now.ToString();
}

所以我的问题是如何从按钮转到上一个标签页?我已经浏览过这里并尝试了所有出现的链接,但没有任何想法?

4

1 回答 1

2

您应该使用该SelectedIndex属性而不是使用具体TabPage实例。这样,当您决定更改 pab 页面的顺序或添加新页面时,它仍然可以工作:

private void previousButton_Click(object sender, EventArgs e)
{
    if (tabControl1.SelectedIndex > 0)
    {
        tabControl1.SelectedIndex--;
    }
}

private void nextButton_Click(object sender, EventArgs e)
{
    if (tabControl1.SelectedIndex < tabControl1.TabCount - 1)
    {
        tabControl1.SelectedIndex++;
    }
}

由于 .NET Framework 中没有“Tabless”选项卡控件,我只能假设它的工作方式类似于标准的TabControl. 如果解决方案不起作用,您应该向我们提供有关您使用的实际类的一些信息。

顺便说一句:没有必要重复每一页上的按钮。为什么不把按钮放在 TabControl 之外呢?

另外:我看到您使用 aToolStripStatusLabel来显示当前时间。而不是每次用户单击某处时都更新它,而是将 a 添加Timer到您的表单中。将其设置Interval为 1000 并处理其Tick事件。在那里更新标签:

private void timer1_Tick(object sender, EventArgs e)
{
    toolStripStatusLabel1.Text = DateTime.Now.ToLongTimeString();
}

这样它会不断更新,无需重复任何内容。您需要调用timer1.Start()表单的构造函数。

于 2013-04-14T02:37:39.180 回答