2008-12-03 4 views
2

Я создаю winform в C# с различными элементами в панели, которые начинаются либо невидимыми, либо отключены, либо установлены в нуль (метки, комбинированные поля, сетки, и т.д.). Когда пользователь проходит и делает выбор, эти элементы заполняются, выбираются и т. Д.Сброс элементов winform в исходное состояние (C# /. Net)

Идея состоит в том, чтобы загружать файлы, читать их и обрабатывать записи в базе данных. Как только обработка для этого каталога будет завершена, я хочу, чтобы пользователь мог выбрать другой каталог, не покидая и перезапуская приложение winform, нажав кнопку, которая становится видимой, когда процесс завершится.

Есть ли простой вызов для сброса приложения (или панели, содержащей элементы), подобно тому, как обновляется webform, или мне нужно написать функцию, которая «сбрасывает» все эти элементы, время?

EDIT: В результате совещания по вопросам развития мой проект изменил направление. Я благодарю двух из вас, кто помог с ответами, и я собираюсь закрыть вопрос.

+0

Привет. Ответ на этот вопрос указал мне на решение, которое разрешило одну из моих проблем. Может быть, вам следует снова открыть это, поскольку это может быть не очень важно для вас, это может быть связано с другими людьми. – MrValdez 2009-05-22 08:00:51

ответ

2

Просто удалите панель из формы и создайте новую.

EDIT: Пример:

Panel CreatePanelWithDynamicControls() { 
    Panel ret = new Panel(); 
    ret.Dock = DockStyle.Fill; 
    // some logic, which initialize content of panel 

    return ret; 
} 

void InitializeDynamicControls() { 
    this.Controls.Clear(); 
    Panel pnl = this.CreatePanelWithDynamiControls(); 
    this.Controls.Add(pnl); 
} 

void Form1_Load(object sender, EventArgs e) { 
    if (!this.DesignMode) { 
     this.InitializeDynamicControls(); 
    } 
} 

// I don't know exactly, on which situation 
// do you want reset controls 
void SomeEvent(object sender, EventArgs e) { 
    this.InitializeDynamicControls(); 
} 
1

Вы можете попробовать позвонить this.InitializeComponent(), который может сделать трюк. В качестве альтернативы, если ваше приложение имеет форму «Выбор каталога» и форму «Обрабатывать файлы», вы можете создать форму «Выбор каталога» в форме «Новые» в форме «Файлы процесса», которая должна вернуть ее в исходное состояние (не открытые, хотя).

+0

Он забросил ошибку, потому что (я думаю) кнопка, вызывающая ее, не была объектом для повторной инициализации. – 2008-12-03 17:18:00

+0

Если вы находитесь на форме, и вы называете это «это», она должна ссылаться на форму. Какая ошибка? – GWLlosa 2008-12-03 18:22:15

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