#c# #winforms #visual-studio-2010
#c# #winforms #visual-studio-2010
Вопрос:
Я погуглил это и все еще не могу заставить это работать. Я знаю, как добавить вкладку с помощью toolbox. Я также читал о том, как это сделать программно, но я все еще не понимаю. (MSVC # Express 2010)
У меня есть простая настройка проекта. Просто форма Windows с TabControl в ней, я использовал конструктор для добавления нового TabControl и сделал этот TabControl общедоступным вместо частного.
Я написал этот код, чтобы: а) получить доступ к форме Windows; б) добавить страницу с вкладками.
Код компилируется просто отлично, но страница Tabpage не отображается во время выполнения.
static class Program
{
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();
Form1 ApplicationMainForm = new Form1();
Application.Run(ApplicationMainForm); //LABEL B
ApplicationMainForm.tabControl1.TabPages.Add("MyPage"); //LABEL A
}
}
Как я могу заставить форму отображать мою страницу с вкладками?
Моя страница с вкладками отображается, когда строки A и B меняют положение. Мне не хватает метода обновления, или добавление TabPage никогда не вызывается, пока приложение не закроется?
Правка # 1: некоторые незначительные правки. Правка # 2: Отредактировано в другом коде примера. Правка # 3: Удалены некоторые более ранние / нерелевантные моменты. Правка # 4: Нашел подсказку и отредактировал эту информацию в
Комментарии:
1. Не могли бы вы показать код, который вы пытались использовать до сих пор? Не совсем понятно, что вы пытаетесь сделать и в чем ваша проблема.
2. Вы получаете исключение при сбое программы? Если да, пожалуйста, опубликуйте это здесь.
3. Разгадал загадку. Я почему-то предположил, что форма выполняется в своем собственном потоке — это не так. Добавление работает просто отлично, мне просто нужно переосмыслить, как я хочу, чтобы моя программа работала. Я приму первый ответ, в котором говорится, что 🙂
Ответ №1:
Form1.tabControl1.Controls.Add(myNewTabItem);
Элемент управления tab представляет собой набор страниц вкладок, поэтому вы добавляете страницы вкладок так же, как вы добавляете любой элемент управления в коллекцию. Обратите внимание, что вкладки отображаются в том порядке, в котором вы их добавили.
Комментарии:
1. Смотрите также TabControl и ControlCollection
Ответ №2:
Если вы пытаетесь добавить вкладку в форму во время выполнения, вероятно, проблема заключается в том, что вы пытаетесь настроить определение формы вместо конкретного экземпляра этой формы, который вы в данный момент отображаете. Когда форма открыта, это экземпляр определения формы. Вы должны найти этот экземпляр, чтобы изменить его свойства. Следовательно, вам нужно, чтобы другая часть вашей программы каким-то образом знала об этом конкретном экземпляре вашей формы через что-то вроде ссылочной переменной.
Комментарии:
1. Да, это имело к этому отношение… Я попытался инициализировать такую форму XYZ = new Form1(); … который не мог работать. Другая проблема заключалась в том, что я не вызывал rendering default перед инициализацией.