2015-07-01 7 views
2

Я программист MS Access, переходящий на C#. В MsAccess у меня есть подпрограмма, в которой я открываю новую форму в представлении дизайна, а затем она заполняет элементы управления на основе полей, присутствующих в таблице SqlServer. Он не только создает элементы управления, но и создает обработчики событий по умолчанию, которые я использую. это отличная экономия времени.Создание динамических форм управления Постоянный

Так что теперь я пытаюсь сделать это на C#. У меня есть рутина, которая динамически создает элементы управления таким образом:

MyTextBox=new System.Windows.Forms.TextBox(); 
this.Controls.Add(MyTextBox); 

Моя проблема в том, что элементы управления не являются постоянными. Когда я вернусь к дизайну формы, ни один из динамически созданных элементов управления не существует. Есть ли способ сделать это?

Я думаю, что моим последним средством было бы заставить мою рутину открывать файл исходного кода .CS и писать строки кода C# там. Но если есть более простой способ сделать это, я хотел бы знать, пожалуйста.

+0

Нет, не легко в любом случае. Без внедрения системы сериализации времени проектирования и записи в ваши файлы * .designer.cs все, что вы измените время выполнения, не будет отражать время разработки. Самое простое решение - сохранить управляющую информацию в XML или другом файле и загрузить ее при следующем запуске приложения, восстанавливая элементы управления. –

+0

С течением времени, когда вы проводите запись этой процедуры для создания формы, вы можете просто создать форму вручную. Создайте свое приложение, не пишите код для создания своего приложения. его время waster. см. здесь: http://www.hanselman.com/blog/YakShavingDefinedIllGetThatDoneAsSoonAsIShaveThisYak.aspx –

+0

У меня есть десятки форм для создания, некоторые из которых имеют до 40 элементов управления. Каждый элемент управления имеет как минимум 5 обработчиков событий. Моя процедура MsAccess настраивает форму за секунду, тогда все, что мне нужно сделать, это перетащить элементы управления в нужное место. Яковское бритье не входит в это. –

ответ

-1

Подкласс класса Form и его конструктор создают и добавляют элементы управления.

тогда вы можете выбрать его в качестве шаблона при добавлении новой формы в проект.

ваш шаблон формы может быть:

public partial class TempleteForm : Form 
{ 
    public TextBox MyTextBox; 
    public TempleteForm() 
    { 
     MyTextBox = new System.Windows.Forms.TextBox(); 
     this.Controls.Add(MyTextBox); 
    } 
} 

enter image description here

enter image description here