2014-01-21 20 views
2

Я читаю эту тему (Adding buttons to a TabControl Tab in C#), но я не понимаю, почему мой код ниже добавляет одну кнопку только на вкладку. Я, очевидно, отлаживал, что foreach работает правильно.Добавление программ программно в TabControl (TabPage)

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

Вы думали, что добавили только 1 кнопка для вас, но на самом деле это не произошло, добавил он все кнопки для вас, но эти кнопки имели один и тот же Адрес (который (0,0) по умолчанию). Вот почему вы думали, что есть только одна кнопка (потому что вы видели только одну последнюю кнопку поверх других).

Вы добавили кнопки автоматически к вашему TabPage, так что вы должны иметь некоторые правила, чтобы найти их, я не уверен, что это правило, но я полагаю, вы хотите, чтобы выровнять их по вертикали (просто пример), я собираюсь исправить код, чтобы достичь такой вещи, по крайней мере, вы будете видеть его работу, а на самом деле все кнопки добавляются нормально:

//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 чтобы содержать все кнопки, они могут помочь упорядочить ваши кнопки каким-то образом, вы можете захотеть, просто попробуйте.

Смежные вопросы