以编程方式将按钮添加到TabControl(TabPage)

时间:2014-01-21 15:39:50

标签: c# winforms tabcontrol tabpage

我读了这个主题(Adding buttons to a TabControl Tab in C#),但我不明白为什么我的代码只在标签页中添加一个按钮。 我显然调试了foreach正常工作。

foreach (string line in File.ReadAllLines(@"C:\quicklauncher.ini"))
{   
    TabPage page = new TabPage(foldername);
    DirectoryInfo d = new DirectoryInfo(line);
    foreach (FileInfo file in d.GetFiles("*.*"))
    {
        Button button = new Button();
        button.Text = file.Name;
        button.Click += new EventHandler(button_Click);
        page.Controls.Add(button);
    }   
    tabControl.TabPages.Add(page); //add our tab page to the tab control
}

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:1)

您认为它只为您添加了一个按钮,但事实上它没有,它为您添加了所有按钮,但这些按钮具有相同的位置(默认为(0,0) )。这就是为什么你认为只有一个按钮(因为你在其他按钮上只看到了最后一个按钮)。

您已将自动按钮添加到您的标签页,因此您应该有一些规则来定位它们,我不确定该规则是什么,但我想您要将它们垂直排列(只是一个例如),我要纠正你的代码来实现这样的事情,至少你会看到它的工作,事实上所有的按钮都是正常添加的:

//you need some variable to save the next Top for each new button:
//let's call it nextTop:
int nextTop = 0;
foreach (FileInfo file in d.GetFiles("*.*"))
{
    Button button = new Button { Top = nextTop,      
                                 Text = file.Name };
    button.Click += new EventHandler(button_Click);
    page.Controls.Add(button);
    nextTop += button.Height + 5; //it's up to you on the 
                                 //Height and vertical spacing
}
//...

您还可以尝试使用某些布局控件(如FlowLayoutPanelTableLayoutPanel)来包含所有按钮,它们可以帮助您以某种方式排列按钮,只需尝试即可。