Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C在选项卡控件中存储选项卡页的原始位置_C#_Winforms_Tabcontrol_Tabpage - Fatal编程技术网

C# C在选项卡控件中存储选项卡页的原始位置

C# C在选项卡控件中存储选项卡页的原始位置,c#,winforms,tabcontrol,tabpage,C#,Winforms,Tabcontrol,Tabpage,我对C比较陌生,我正在尝试使用一个包含5个选项卡页面的选项卡控件。这些选项卡页面在需要时显示和隐藏,我可以将页面重新添加到所需位置,例如,应通过输入与我希望其出现的位置相关的数字并交换页面,在tabPage1和tabPage3之间重新添加TabPage2。如何存储tabPages的原始位置,然后只说应该将tabPage2添加到tabPage2的存储位置 提前感谢您的帮助。您可以将原始位置存储在Tag属性中。需要一些逻辑,因为第1页和第3页可能都不存在。这应该很接近: public partial

我对C比较陌生,我正在尝试使用一个包含5个选项卡页面的选项卡控件。这些选项卡页面在需要时显示和隐藏,我可以将页面重新添加到所需位置,例如,应通过输入与我希望其出现的位置相关的数字并交换页面,在tabPage1和tabPage3之间重新添加TabPage2。如何存储tabPages的原始位置,然后只说应该将tabPage2添加到tabPage2的存储位置


提前感谢您的帮助。

您可以将原始位置存储在Tag属性中。需要一些逻辑,因为第1页和第3页可能都不存在。这应该很接近:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        for (int page = 0; page < tabControl1.TabCount; ++page)
            tabControl1.TabPages[page].Tag = page;
    }

    private List<TabPage> hiddenPages = new List<TabPage>();

    public void ShowTab(TabPage page) {
        int pos = (int)page.Tag;
        int insertPoint;
        for (insertPoint = 0; insertPoint < tabControl1.TabCount; ++insertPoint) {
            if (pos <= (int)tabControl1.TabPages[insertPoint].Tag) break;
        }
        tabControl1.TabPages.Insert(insertPoint, page);
        hiddenPages.Remove(page);
    }
}

你会把位置放在哪里?这是为了保存应用程序运行之间的布局吗?我只想在应用程序仍在运行时存储位置,以便如果用户单击按钮(例如,其中一个隐藏的选项卡页面),将在其原始位置重新显示,以确保其位置的一致性。