【问题标题】:How to disable tab headers in tabcontrol如何在 tabcontrol 中禁用选项卡标题
【发布时间】:2013-12-19 17:16:18
【问题描述】:

我有一个向导来制作一个项目,我让我们成为一个tabcontrol。我有按钮可以转到下一个选项卡或上一个选项卡。我现在的问题是,即使对必填字段的按钮进行了验证,您仍然可以通过单击选项卡标题在选项卡之间切换。如果我禁用选项卡控件,用户也不能使用选项卡内的任何内容。我能解决这个问题吗?

更新:向导表单的所有代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;

using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WorldEstablisher
{
    public partial class ProjectWizard : Form
    {
        #region variables

    public Form1 MainForm { get; set; }

    #endregion

    #region constructor and page load

    public ProjectWizard(Form1 form)
    {
        InitializeComponent();
        MainForm = form;
    }

    private void ProjectWizard_Load(object sender, EventArgs e)
    {
    }
    #endregion

    #region navigation

    private void nextButton_Click(object sender, EventArgs e)
    {
        if (tabs.SelectedIndex == 0)//field validation tab 1
        {
            if (folderLocationTextBox.Text != "" && worldNameTextBox.Text != "")
            {
                backButton.Visible = true;
                tabs.SelectedIndex = tabs.SelectedIndex + 1;
            }
        }

        if (tabs.SelectedIndex == 1)//field validation tab 2
        {
            if (authorTextBox.Text != "")
            {
                tabs.SelectedIndex = tabs.SelectedIndex + 1;
            }
        }

        if (tabs.SelectedIndex == 2)
        {
            finishButton.Visible = true;
        }
    }

    private void backButton_Click(object sender, EventArgs e)
    {
        if (tabs.SelectedIndex != 0)
        {
            tabs.SelectedIndex = tabs.SelectedIndex - 1;
            if (tabs.SelectedIndex == 0)//Make the back button invisible
            {
                backButton.Visible = false;
            }
            if (tabs.SelectedIndex != 2)//Make the finish button invisible
            {
                finishButton.Visible = false;
            }
        }
    }

    private void finishButton_Click(object sender, EventArgs e)
    {
        World world = new World("test");
        MainForm.CurrentWorld = world;
        this.Close();
    }

    #endregion

    private void selectFolderButton_Click(object sender, EventArgs e)
    {
        if (folderBrowser.ShowDialog() == DialogResult.OK)
        {
            folderLocationTextBox.Text = folderBrowser.SelectedPath;
        }
    }
}
}

【问题讨论】:

  • 你从哪里得到这个向导的?霍格沃茨?中土?..对不起,我无法抗拒这个。另外,您能否向我们展示一些代码,使您的问题更清楚?

标签: c# winforms tabcontrol


【解决方案1】:

应该有更好的方法来做到这一点,但是在TabControl 的SelectedIndexChanged 事件中,您可以将SelectedTab 设置为您想要的任何TabPage。当用户点击您的导航按钮时跟踪当前的TabPage。

private TabPage currentTabPage;
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    tabControl1.SelectedTab = currentTabPage;
}

由于您将基本上消除 TabControl 的内置导航,我会重新考虑您的设计。使用您根据按钮导航机制显示或隐藏的一组Panel 对象。不要通过向用户显示他们永远无法使用的选项卡按钮来混淆用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多