在C#中查找TabControl中的选项卡页

9

我在我的应用程序中有一个选项卡控件。我有一个列表框,其中包含错误的行号以及文件的名称和路径。双击后,我想添加新的选项卡页。选项卡页的标题应该是来自列表框的文件名。如果具有特定文件名的选项卡页已经存在,则不应打开新的选项卡页,光标应指向该页。如何检索选项卡页的名称。

private void lstErrorList_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ArrayList errorType = new ArrayList();
            if (lstErrorList.Items.Count > 0)
            {
                string error = lstErrorList.SelectedItem.ToString();



                {

                    int result = error.LastIndexOf('\\');
                    string filename = error.Substring(result + 1, error.Length - (result + 1));
                    int pagecount;
                    TabPage tp = new TabPage();
                    pagecount = this.tabControl1.TabPages.Count;
                    for(int tbpagecount=0;tbpagecount<pagecount;tbpagecount++)
                    {
                        pagelist.Add(this.tabControl1.TabPages.ToString());
                    }
                    if (pagelist.Contains(filename))
                    {


                    }
                    else
                    {
                        this.tabControl1.TabPages.Insert(pagecount, filename);
                        pagecount++;
                    }

                    if (fileNamesList.Count == 0)
                        fileNamesList.Add(filename);
                    else
                    {
                        if (fileNamesList.Contains(filename))
                        {
                            //fileNamesList.Add("");
                        }
                        else
                        {
                            fileNamesList.Add(filename);

                        }

                    }
                }  
3个回答

12
        bool found = false;
        foreach (TabPage tab in tabControl1.TabPages) {
            if (filename.Equals(tab.Name)) {
                tabControl1.SelectedTab = tab;
                found = true;
            }
        }
        if( ! found)
                tabControl1.TabPages.Add(filename,filename);

为了提高速度,在“found = true;”下面加上一个“break”。对于这个例子来说,这并不是非常必要,但是“聚沙成塔”嘛 :-) - Biber

7
        var tabPage = tabControl1.TabPages[filename];
        if (tabPage != null)
        {
            tabControl1.SelectedTab = tabPage;
        }
        else
        {
            tabControl1.TabPages.Add(filename, filename);
        }

1
通常在你的代码前加上解释它的作用和为什么它能够工作会更有帮助。 - PC Luddite
2
不用担心,@Edy,只有你和我知道这是一个更好的答案;) LOL - burntblark

2

这种做法可行吗?

        string fileName = "";
        bool isPresent = false;

        for (int i = 0; i < tabControl1.TabPages.Count; i++)
        {
            if (tabControl1.TabPages[i].Name == filename)
            {
                isPresent = true;
                break;
            }
        }

        if (isPresent)
        {
                tabControl1.TabPages.Add(filename);
        }
        else
        {
                tabControl1.SelectTab(tab.TabIndex);
        }

1
如果第一个选项卡页面不是给定文件名的页面,则始终会添加新的选项卡页面,而在枚举集合时修改它将导致异常。 - ChrisWue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接