我读了这个主题(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
}
谢谢, 史蒂夫
答案 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
}
//...
您还可以尝试使用某些布局控件(如FlowLayoutPanel
和TableLayoutPanel
)来包含所有按钮,它们可以帮助您以某种方式排列按钮,只需尝试即可。