2014-01-21 6 views
0

У меня есть несколько форм, и мне было интересно, было бы хорошей практикой добавлять панели в форму, копировать через некоторые другие формы в основную форму и отображение. Например, я мог бы иметь Form1, Form2, Form3 и Form4. Затем я удалил Form2 и Form3 - предварительно скопировал элементы на 2 новые панели в Form1, а затем просто переключился между разными «видами», используя местоположение, видимость и размер.Сокращение нескольких форм в 1 форме. Хорошая или плохая практика?

Я создал реальный пример ниже, используя те же аспекты:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.Width = 385; 
    this.Height = 243; 
} 

private void ButtonSearch_Click(object sender, EventArgs e) 
{ 
    this.Width = 541; 
    this.Height = 226; 

    panelSearch.Visible = false; 
    panelFileInfo.Visible = true; 
    panelFileInfo.Location = new System.Drawing.Point(0, 2); 
    label4.Text = textBox1.Text; 
} 

private void labelSearchAgain_Click(object sender, EventArgs e) 
{ 
    this.Width = 385; 
    this.Height = 243; 

    textBox1.Text = string.Empty; 
    checkBox1.Checked = false; 
    checkBox2.Checked = false; 
    panelSearch.Visible = true; 
} 
+0

Это похоже на то, что вы наделите codereview, но кода нет, что также делает его недействительным. Это не относится к UX, потому что это, по-видимому, вопрос о лучших методах кодирования ... Я в недоумении. – Magus

+0

Я никогда не слышал об этом. Это не неверно, как? Я только что создал формы и две панели, а затем создал скриншот перспективы. В Form1.cs код по умолчанию ... Я добавил ничего по-коду, поскольку я просто использовал инструменты. Итак, почему я должен загрузить какой-то код, который по умолчанию используется при создании новой формы? Это простой пример, показывающий использование панелей. – lornasw

+0

Это точка StackOverflow? Люди приходят сюда, когда у их кода есть проблемы, и вообще вопросы без кода не являются доменом SO. Это может быть правильным вопросом, но если так, то это довольно близко. – Magus

ответ

2

Я стараюсь создавать компоненты пользовательских компонентов/usercontrols, которые объединяют 2 или 3 элемента управления. Затем я работаю над этими новыми компонентами, чтобы сделать их многократно используемыми (по крайней мере, внутри одного и того же проекта) с поддержкой времени разработки и т. Д.

Предлагаю вам попробовать конвертировать ваши формы в элементы управления, а затем перетащить ваши пользовательские элементы управления в вашей основной форме

+0

Это замечательно, но я не думаю, что могу использовать UserControls для него ... В моем проекте я могу изменить язык из выбор 21:/Так что я не использую это, это сработает ... Но это будет иметь в виду для будущих проектов! Ты открыл глаза! – lornasw

+0

UserControls поддерживает многоязычность, а также формы. Это очень простая задача с графическим интерфейсом. – sam

+0

Отлично, я сделаю это. – lornasw

1

Хорошо, у нас есть много унаследованного кода на работе, где кто-то сделал именно то, что вы пытаетесь делать. Они объединили дюжину различных форм в одну огромную форму с панелями, которые были динамически показаны/скрыты, перемещены и обработаны.

Это стало кошмаром для обслуживания!

Храните формы в соответствии с их функциональными возможностями. Дайте им хорошие описательные имена. И если вы только начинаете проект, вы можете подумать о том, чтобы приложить свои усилия к изучению WPF, поскольку он является естественным преемником WinForms.

Все это основано на моем мнении, конечно, но оно также основано на 5-летнем опыте сохранения некоторого кода спагетти, и я рекомендую вам попытаться избежать его.

+0

Я бы тоже посоветовал. В Winforms он должен стать уродливым очень быстро. WPF в сочетании с хорошим Toolkit, как Caliburn..Micro был бы хорошо подходим к этой проблеме. # –

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