2014-12-13 3 views
1

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

Есть ли способ, что я могу сохранить состояние ОС Windows Формировать и перезагружать его позже?

Пример кода, используемого для генерации добавить пользовательский элемент управления:

private void assignmentToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    counter++; 
    tableLayoutPanel1.RowCount += 1; 
    int index = tableLayoutPanel1.RowCount; 
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));  

    userControl21 = new Test2.UserControl3(assignmentDisplayTemplate, assignmentCommandTemplate,variables); 
    userControl21.DataAvailable += new EventHandler(userControl21_DataAvailable);  

    tableLayoutPanel1.Controls.Add(userControl21,1,index); 

    userControl21.AutoSize = true; 
    userControl21.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 
    userControl21.Location = new System.Drawing.Point(28, 28); 
    userControl21.Size = new System.Drawing.Size(335, 35); 
    userControl21.TabIndex = 0; 

    userControl21.Name = "Assignment" + counter; 
} 
+0

http://msdn.microsoft.com/en-us/magazine/cc163634. ASPX –

ответ

0

Вы должны смотреть на FluentSharp (https://github.com/o2platform/fluentsharp), где вы или ваши пользователи могут сделать это программно, например, как это

var targetFolder = @"C:\O2"; var sourceCodeViewer ="View C# and H2 files in folder".popupWindow() .add_SourceCodeViewer(); sourceCodeViewer.insert_Left(200) .add_TreeView() .add_Nodes(targetFolder.files(true,"*.cs","*.h2"), (file)=>file.fileName()) .after_Selected<string>((file)=>sourceCodeViewer.open(file));

См https://github.com/o2platform/O2.Platform.Scripts для тонн примеров

, например

Вот документация API веб-автоматизации (https://github.com/o2platform/Book_WebAutomation/blob/master/O2Documentation.md), но WinForms API очень похож (и более мощный: https://github.com/o2platform/FluentSharp/tree/master/FluentSharp.WinForms/ExtensionMethods)

0

В какой-то степени вы может использовать сериализацию для хранения, например, размера окна, а затем при инициализации окна его можно вернуть обратно к сериализованным значениям. Но в целом то, что вы пытаетесь сделать, - довольно сложная и сложная задача без быстрого ответа. Ниже я добавил две ссылки. Один описывает, как создать собственный механизм компоновки, другой представляет собой реализацию сериализатора, который сохраняет состояние всего окна. Это должно дать вам направление, где искать решение: