Из каких файлов должен состоять чистый проект WinForms?
На днях перешел к освоению оконных интерфейсов в C#, на примере WinForms.
Преподаватель курса, по которому я учусь, настаивает на том, что использовать дизайнер WinForms не нужно, а нужно программировать интерфейс полностью с помощью кода (кстати, было бы здорово услышать и другие мнения на этот счет, как на счет WinForms, так и на счет WPF).
Раз дизайнер форм не следует использовать, значит в проекте он не нужен. Отсюда появился вопрос - а из каких файлов вообще должен состоять "чистый" проект на WinForms? По сравнению с консольными приложениями, которые я пилил раньше, в нем достаточно много незнакомых файлов. Есть ли смысл вообще создавать проект WinForms, или лучше создавать проект консольного приложения и просто подключать к нему библиотеки Windows.Forms и System.Drowing?
Ответы (1 шт):
Вот вам минимальное приложение Windows Forms
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ProjectTestMyLabel1 {
static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form2 frmMain = new Form2();
Application.Run(frmMain);
}
}
class Form2: Form {
public Form2() {
SuspendLayout();
AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(275, 83);
Controls.Add(new Label() {
Dock = System.Windows.Forms.DockStyle.Fill,
Location = new System.Drawing.Point(0, 0),
Name = "Label1",
Size = new System.Drawing.Size(275, 83),
Text = "The Label",
TextAlign = System.Drawing.ContentAlignment.MiddleCenter
});
Text = Name = "Form2";
StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
ResumeLayout(false);
}
}
}
Файл *.Designer.cs
- это просто код формы, который выполняется для её создания. Дизайнер форм Visual Studio использует этот файл для отображения формы в режиме редактирования (поэтому этот файл менять в ручную без знания особеннойстей не рекомендуется - как минимум, дизайнер не будет работать).
Использовать дизайнер форм можно и нужно. Другое дело, что вы можете сами, помимо дизайнера, запрограммировать, например, создание массива элементов управления для ваших нужд:
class Form2 : Form {
public Form2() {
SuspendLayout();
AutoScaleDimensions = new SizeF(8F, 16F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(275, 123);
Controls.AddRange((new int[] { 12, 42, 72 }).Select(s => new Label() {
Location = new Point(12, s),
Name = "Label" + s,
Size = new Size(100, 23),
Text = "The Label " + s,
TextAlign = ContentAlignment.MiddleCenter
}).ToArray());
Text = Name = "Form2";
StartPosition = FormStartPosition.CenterScreen;
ResumeLayout(false);
}
}